html - 浏览器如何加载Flash文件? (瑞士法郎)

标签 html performance browser flash

浏览器如何加载flash文件?它们是逐步加载,还是浏览器等到整个flash文件加载后才显示?
原因是我有一个非常高质量的小剪辑,只有几秒长,但它超过了4MB。
在查看之前,用户是否需要等待所有4 mb的加载?还是用户观看时加载?
我没有做任何花哨的事情,我只是把一个.flv导入Flash,然后作为一个.swf导出。
提前谢谢你

最佳答案

加载flash文件有很多部分,更一般地说,是一个HTML页面。
我将从HTML页面的顶部开始,并敦促其他人纠正我可能犯下的任何错误。
加载页面
当收到HTML页面时,浏览器将其解析为文档对象模型(Document Object Model,DOM),以便它对每个元素都有一个编程表示。浏览器遍历DOM树中的每个节点,并根据需要填充它。
对于大多数节点,这只是创建一个新的DOM元素,比如divpa;但是有些内容需要加载或替换。
表单元素(inputselectbuttontextarea)将替换为这些表单字段的浏览器特定表示。
link用作样式表的元素是异步加载的。当加载外部资源时,DOM继续解析页面。
script另一方面,元素是同步加载的。在脚本完成加载和执行之前,DOM无法继续分析树,但加载失败或执行出错时除外。
img元素是异步加载的,但允许onload回调确定它们何时完成加载。在所有onload元素完成加载(或失败)之前,DOM无法触发窗口的img事件。
理解基本元素有助于理解更多涉及的元素,如objectembediframe,它们也被替换为内容。
Flash通常使用objectembediframe嵌入到网页中。
据我所知,objectembed元素的反应类似,所以我会从这里开始抄近路说object
iframeobject元素中加载flash有显著差异。
object元素与script元素非常相似,其中必须成功加载和执行内容,然后才能继续分析DOM。
iframe元素与异步加载内容的img元素非常相似,但可以使用回调来确定加载何时完成(尽管我不确定回调是否可用于跨域请求)。
加载闪存
上一节仅讨论内容加载的HTML方面。然而,flash中存在许多细微差别,这些细微差别会严重影响flash电影的加载时间。
如前所述,script元素必须完全加载并执行,然后才能继续分析DOM。Flash文件中也有类似的效果(即使通过iframe包含)。必须先加载swf中嵌入的所有资源,然后swf才能释放其对页面加载进度的保留。
如果您已经将视频直接嵌入到时间轴中,则必须加载整个视频,然后才能将flash视为完成其初始执行。
相反,如果您选择使用异步回调开始加载碰巧是视频的外部资源,并使用异步加载程序加载视频,则无需等待视频加载完成,页面的其余部分才能加载;在flash中,在开始播放视频之前,您仍然需要等待视频完成加载。
或者,在flash中有许多装置用于流式传输视频,或者从服务器逐步加载视频,这将使视频能够在未完成加载的情况下播放。我对flash这方面的经验很少,所以我不会解释它是如何做到的。
使用类似于swfobject的库允许异步加载所需的swf,这样flash加载就不会阻塞。
tl;博士:
Flash文件可能会逐步加载,这取决于您如何构建HTML,以及swf中运行的代码。
您可能需要查看swfobject

关于html - 浏览器如何加载Flash文件? (瑞士法郎),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7096824/

相关文章:

javascript - Bootstrap侧边栏和页面内容合并

java - 对象内对象的内存分配

sql - Oracle 并行查询等待统计信息不在 tkprof 的报告中

javascript - 如何引用 php 文件中未在 <form> 中提及的元素

javascript - 暗示特定位置条件的可拖动用户界面

c# - C# 中的谷歌浏览器框架?

javascript - 在javascript Date对象中获取当前文档的最后修改日期

javascript - 以编程方式访问浏览器中的网页错误详细信息

javascript - 尝试绘制从鼠标位置的工具栏中选择的形状-HTML5 CANVAS

c# - 为什么在 C# 中添加 2D 矢量结构比添加 3D 矢量结构慢?