[英]How can I reduce the load time of my javascripts?
我的页面上有以下代码:
<script src="/Scripts/common/layout/addAccessControls.js"></script>
<script src="/Scripts/common/layout/addAjaxControls.js"></script>
<script src="/Scripts/common/layout/addBodyControls.js"></script>
<script src="/Scripts/common/layout/addContentControls.js"></script>
<script src="/Scripts/common/layout/addThemeControls.js"></script>
<script src="/Scripts/common/layout/hashClick.js"></script>
<script src="/Scripts/common/layout/setSideBar.js"></script>
所有脚本将一个接一个地加载是否正确? 如果有的话,我可以一次制作多个负载吗?
只是为了澄清一下这个问题。 我可以缩小这些并且连接,也许它们已经被模仿和连接:-)我有兴趣找出的是给定这些确切文件的加载过程。 它是一个接一个的文件。 浏览器是否对并行负载做了任何事情。 谢谢
好吧,第一个问题是脚本是一个接一个地加载的。 第二个问题是请求的数量。 请求越多,所需的时间越长。
最简单的方法是将文件服务器端连接成一个.js
文件,这样你只剩下一个请求。 这样可以加快速度。
如果你另外缩小脚本,这也会加快速度。
根据您使用服务器端的框架,有各种解决方案可以执行此操作。 例如,对于Node.js,您可以使用Piler在运行时执行此操作。
或者,当然,您始终可以通过构建作业分别手动执行此操作。
PS:当然,您可以使用其他机制来加载脚本文件,例如动态添加脚本标记,这将允许您并行加载。 有关详细信息,请参阅http://blogs.msdn.com/b/kristoffer/archive/2006/12/22/loading-javascript-files-in-parallel.aspx 。
您可以使用async
命令(HTML5):
<script async src="slow.js"></script>
动态脚本加载:
var script = document.createElement("script");
script.async = false;
script.src = url;
document.head.appendChild(script);
是的,它们将被一个接一个地加载和执行 。 你无法改变这一点。
但是如果你担心表演,你可能会很高兴得知下载过程不同,可能会被浏览器并行化。
您可以通过打开Chrome开发者工具的网络标签在Chrome中看到它。
如果要减少总时间,最好的解决方案是将所有文件连接在一起(如果可能,将其缩小,但重要的操作是连接)。
这是脚本阻止。 它是一个浏览器功能。 不同的浏览器并行下载不同数量的文件。 脚本将相互加载并执行。 您可以阅读Steve Souders和Nicolas Zakas撰写的这些文章。 这可以帮到你。
http://www.stevesouders.com/blog/2009/04/27/loading-scripts-without-blocking/ http://www.nczonline.net/blog/2009/06/23/loading-javascript-without-阻断/
根据浏览器和正在下载的其他文件的数量(例如图像),您可能会按照您下载的顺序同时下载多个JavaScript文件。
您可以使用Firebug或Chrome的开发人员工具来了解这种情况。 您会注意到您的浏览器将始终加载多个文件,但同时下载的最大数量因浏览器和正在使用的版本而异。
如果你的问题与标题有关( 如何减少我的javascripts的加载时间? ),一个好的方法是
根据浏览器的不同,将并行加载不同数量的文件。 它们应该并行执行,但为了获得最佳结果,请将事件处理程序附加到页面,如onload
。
如果通过减少服务器往返而不更改文件,则连接文件将会缩短加载时间。 您还可以尝试使用缓存清单或使用AJAX懒惰地加载三级脚本。
您可以尝试使用这种技术,以适合您现有代码的方式...
1. Use minify version of JS code
2. Add only one external JS file (copy all content to one)
3. Use cookie less domain
您可以在将文件推送到生产时合并文件以获取单个文件[并最小化它们] ...这样您将保存请求手动检查以及介于两者之间的所有步骤...
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.