是否有一种通用的方法来加载所有的资源?我想在我的应用程序启动之前加载一些图像、音频文件和一些.swf
文件。目前,我通过创建新的<img>
元素并将src
设置为图像路径来加载图像;对于音频文件,我在<audio>
标签中添加preload="auto"
属性,并执行一个ajax
请求来加载.swf
文件。
我当前的加载方式存在任何问题(例如某些浏览器不缓存等),是否有“最佳实践”方法来集体预加载所有这些文件类型,以在显示内容之前加载它们?
是否有一种通用的方法来加载所有的资源?我想在我的应用程序启动之前加载一些图像、音频文件和一些.swf
文件。目前,我通过创建新的<img>
元素并将src
设置为图像路径来加载图像;对于音频文件,我在<audio>
标签中添加preload="auto"
属性,并执行一个ajax
请求来加载.swf
文件。
我当前的加载方式存在任何问题(例如某些浏览器不缓存等),是否有“最佳实践”方法来集体预加载所有这些文件类型,以在显示内容之前加载它们?
是的。实际上,这已经成为了一项标准。这里是相关的RFC。正在进行将其纳入HTML5标准化的工作in works。
大多数现代浏览器都支持预取。以下是它们使用方式的简要概述:
根据MDN的说法,您可以在文档头部使用<link>
标签,
<link rel="prefetch" href="/assets/my-preloaded-image.png">
同时还可以通过在请求中设置HTTP Link
头部或者在HTML代码中使用meta
标签来完成此操作。
Link: </assets/my-preloaded-image.png>; rel=prefetch
<meta http-equiv="Link" content="</assets/my-preloaded-image.png>; rel=prefetch">
enter code here
<link rel="next" href="2.html">
在Internet Explorer中也有Prefetch头部。您可以这样设置:
<link rel="prefetch" href="http://example.com/style.css" />
您甚至可以预取(预解析)DNS查询
<link rel="dns-prefetch" href="http://example.com/"/>
<link rel="prerender" href="http://example.com/nextpage.html" />
Chrome在这方面也和Firefox和IE做同样的事情。
我没有找到确凿的证据证明Safari支持这些内容。但是通过阅读多个来源,我怀疑它们支持,只是可能苹果不像微软推动IE11那样热衷于营销Safari(仅代表个人观点)。
玩得开心。 :)
在 FLASH 或 HTML5 项目中,预加载资产是最困难和最简单的任务之一,因为我们已经完成了 FLASH 到 HTML5 的转换项目。
最简单的预加载器是静态预加载器,用于加载它们所在的电影。对于这些预加载器,您需要做的就是在预加载屏幕上停止电影,通常是电影的第一帧,并将其保留在那里,直到您能够确定电影已完全加载到 Flash 播放器中。
预加载器还可以防止更改 Web 页面上未缓存的图像时出现闪烁或延迟,因为每次需要显示相同的图像时都必须从服务器下载该图像。
我们在我们的 Web 应用程序(HTML5)中使用了 jQuery HMTL5 Loader,您可以在此处查看 Github Repo。
这个插件需要一个JSON文件来获取需要预加载的文件,可以预加载图片、HTML5视频和音频源、脚本和文本文件。除此之外,它还有不同类型的加载器(圆形、线性、大计数器等)以及其他附加功能。<script>
var loaderAnimation = $("#html5Loader").LoaderAnimation();
$.html5Loader({getFilesToLoadJSON:'json file',
onUpdate: loaderAnimation.update,
debugMode:false
});
</script>
它在不同的浏览器中完美运行,包括Chrome、FireFox、Safari、Opera等桌面浏览器和移动浏览器。
注意:我们已经在我们的HTML5网页应用程序中使用了它,该应用程序在包括Android和iOS在内的不同平台上运行。
$(window).load(function(){ /* 使用你的任何资源 */ });
。window.onload=function(){/* JavaScriptCode */};
。