浏览器如何加载Flash文件? (SWF)

时间:2011-08-17 17:15:55

标签: html performance browser flash

浏览器如何加载Flash文件?它们是否逐步加载,或浏览器是否等到整个Flash文件加载后再显示它?

原因是我有一个非常高质量的小夹子,只有几秒钟,但它超过4 mb。

在观看之前,用户是否必须等到加载所有4 mb?或者它是否在用户观看时加载?

我没有做任何花哨的事情,我只是将.flv导入Flash,并导出为.swf。

先谢谢你

3 个答案:

答案 0 :(得分:4)

加载Flash文件有很多部分,更常见的是HTML页面。

我将从HTML页面的顶部开始,我敦促其他人纠正我可能犯的任何错误。

加载页面

当收到HTML页面时,浏览器会将其解析为文档对象模型(DOM),以便它具有每个元素的编程表示。浏览器遍历DOM树中的每个节点并根据需要填充它。

对于大多数节点,这只是创建一个新的DOM元素,如divpa;但有些内容需要加载或更换。

表单元素(inputselectbuttontextarea)将替换为这些表单字段的特定于浏览器的表示形式。

用作样式表的

link元素是异步加载的。随着外部资源的加载,DOM继续解析页面。

另一方面,

script元素是同步加载的。在脚本完成加载和执行之前,DOM无法继续解析树,如果加载失败或执行有错误,则无法解析。

img个元素是异步加载的,但允许onload回调确定它们何时完成加载。在所有onload元素完成加载(或失败)之前,DOM无法触发窗口的img事件。

了解基本元素有助于理解更多涉及的元素,例如objectembediframe,这些元素也会替换为内容。

Flash通常使用objectembediframe嵌入网页。

据我所知,objectembed元素的反应相似,所以我会从此处快捷方式并说出object

iframeobject元素中加载闪存之间存在明显差异。

object元素与script元素非常相似,其中必须成功加载并执行内容才能继续解析DOM。

iframe元素非常类似于img元素,其中内容是异步加载的,但回调可用于确定加载何时完成(尽管我不是确定回调是否可用于跨域请求)

加载Flash

上一节讨论只是内容加载的HTML方面。但是,闪光灯内有许多细微差别会严重影响闪光电影的加载时间。

正如我之前所说,在继续解析DOM之前,script元素必须完全加载。在Flash文件中也发现了类似的效果(即使通过iframe包含在内)。必须先加载swf中嵌入的所有资源,然后才能swf释放对页面加载进度的保留。

如果您已将视频直接嵌入到时间轴中,则必须先加载整个视频,然后才能将闪存视为已完成并初始执行。

相反,如果您选择使用异步回调来开始加载恰好是视频的外部资源,并使用异步加载器加载视频,则不必等待视频完成在加载页面的其余部分之前加载;在闪存中,您仍然需要等待视频完成加载才能开始播放视频。

或者,闪存中有许多方法可以流式传输视频,或逐步从服务器加载视频,这样可以在不完成加载的情况下播放视频。 我对flash特定方面的经验很少,所以我不会解释 如何完成

使用像swfobject这样的库可以异步加载所需的swf,以便闪存加载是非阻塞的。

TL; DR:

可能会逐步加载Flash文件 ,具体取决于您构建HTML的方式以及swf中正在运行的代码。

您可能需要查看swfobject

答案 1 :(得分:1)

swf文件逐步加载(因此加载条,“50%加载”消息等)。

历史上,Flash文件基于帧,如果主时间轴有多个帧,则在加载整个文件之前,它们将在加载后立即加载和显示。但是,现在大多数Flash内容都不是这样构造的,并且比按顺序显示的一系列帧更复杂。视频播放还增加了基本帧模型之外的复杂性,包括视频编解码器,音频同步等。

问题的解答“他们是否逐步加载,或浏览器是否等到整个Flash文件加载后再显示它?”是他们逐步加载并显示在整个Flash文件之前swf文件已加载。但是如果没有看到它或者如何构建它,这将如何影响用户体验您的视频的方式很难说。

答案 2 :(得分:0)

它将首先加载整部电影。因此,请将视频设为电影在运行时加载的外部文件。