移除阻止呈现的JavaScript
2014-09-25 23:39
162 查看
个人原创网址:http://www.phpthinking.com/archives/443
浏览器必须先解析网页,然后才能将其呈现给用户。如果浏览器在解析过程中遇到系统阻止的外部脚本,必须停止解析并且下载该JavaScript。每次遇到这种情况时,浏览器都会增加一个网络往返过程,这样就会导致首次呈现网页的时间延迟。
建议您以内嵌方式处理呈现首屏区域所需的JavaScript,并让为网页添加其他功能所需的JavaScript延迟加载,直到首屏内容发送完毕为止。请注意,要通过这种方式缩短加载时间,您还必须优化CSS发送过程。
如果外部脚本较小,您可以直接将它们添加到HTML文档。通过这种方式内嵌较小文件可让浏览器继续呈现网页。例如,如果HTML文档如下所示:
资源
那么,您即可按如下这样内嵌脚本:
这样,您就可以将
为防止JavaScript阻止网页加载,建议您在加载JavaScript时使用HTML异步属性。例如:
如果您的JavaScript资源使用的是document.write,则使用异步加载就会不安全。我们建议您重写使用document.write的脚本,以改用其他技术。
此外,异步加载JavaScript时,如果您的网页加载互相依赖的脚本,请务必谨慎,以确保您的应用以合适的依赖顺序加载脚本。
如果我使用的是JavaScript库(例如jQuery),该怎么做?
很多JavaScript库(例如jQuery)都可用来增强网页,从而为网页增添额外的互动性、动画和其他效果。不过,这些行为大多可在首屏内容呈现后再安全添加。请考虑是否可以将此类JavaScript的执行和加载延迟到网页加载后。
如果我使用JavaScript框架来构造网页,该如何操作?
如果网页内容由客户端JavaScript构造,那么您应考虑一下是否可以嵌入相关的JavaScript模块,从而避免产生额外的网络往返过程。同样,利用服务器端呈现可显著提升首次网页加载的效果,方式如下:在服务器上呈现JS模板,并将结果内嵌到HTML,然后在应用加载后使用客户端模板。
浏览器必须先解析网页,然后才能将其呈现给用户。如果浏览器在解析过程中遇到系统阻止的外部脚本,必须停止解析并且下载该JavaScript。每次遇到这种情况时,浏览器都会增加一个网络往返过程,这样就会导致首次呈现网页的时间延迟。
建议
建议您以内嵌方式处理呈现首屏区域所需的JavaScript,并让为网页添加其他功能所需的JavaScript延迟加载,直到首屏内容发送完毕为止。请注意,要通过这种方式缩短加载时间,您还必须优化CSS发送过程。
内嵌较小的JavaScript
如果外部脚本较小,您可以直接将它们添加到HTML文档。通过这种方式内嵌较小文件可让浏览器继续呈现网页。例如,如果HTML文档如下所示:<html> <head> <scripttype="text/javascript"src="small.js"></script> </head> <body> <div> Hello, world! </div> </body></html>
资源
small.js如下所示:
/* contents of a small JavaScript file */
那么,您即可按如下这样内嵌脚本:
<html> <head> <scripttype="text/javascript"> /* contents of a small JavaScript file */ </script> </head> <body> <div> Hello, world! </div> </body></html>
这样,您就可以将
small.js内嵌在HTML文档中,从而消除对它的外部请求。
延迟加载JavaScript
为防止JavaScript阻止网页加载,建议您在加载JavaScript时使用HTML异步属性。例如:<script async src="my.js">
如果您的JavaScript资源使用的是document.write,则使用异步加载就会不安全。我们建议您重写使用document.write的脚本,以改用其他技术。
此外,异步加载JavaScript时,如果您的网页加载互相依赖的脚本,请务必谨慎,以确保您的应用以合适的依赖顺序加载脚本。
常见问题解答
如果我使用的是JavaScript库(例如jQuery),该怎么做?很多JavaScript库(例如jQuery)都可用来增强网页,从而为网页增添额外的互动性、动画和其他效果。不过,这些行为大多可在首屏内容呈现后再安全添加。请考虑是否可以将此类JavaScript的执行和加载延迟到网页加载后。
如果我使用JavaScript框架来构造网页,该如何操作?
如果网页内容由客户端JavaScript构造,那么您应考虑一下是否可以嵌入相关的JavaScript模块,从而避免产生额外的网络往返过程。同样,利用服务器端呈现可显著提升首次网页加载的效果,方式如下:在服务器上呈现JS模板,并将结果内嵌到HTML,然后在应用加载后使用客户端模板。
相关文章推荐
- 移除阻止呈现的JavaScript
- javascript 添加事件同时阻止冒泡
- javascript冒泡事件的意义及如何阻止冒泡事件
- Javascript 阻止浏览器默认操作的实现代码
- javascript阻止事件冒泡和浏览器的默认行为
- 一种用javascript实现的比较兼容的回到顶部demo + 阻止事件冒泡
- 用JavaScript阻止事件冒泡
- javascript 添加和移除函数的通用方法
- 阻止JavaScript事件冒泡传递
- 阻止JavaScript事件冒泡传递<转>
- JavaScript移除数组元素减少长度的方法
- javascript阻止事件冒泡和浏览器的默认行为
- javascript阻止事件冒泡的兼容写法及其相关示例
- 兼容各大浏览器的JavaScript阻止事件冒泡代码
- 阻止JavaScript事件冒泡传递(cancelBubble 、stopPropagation)
- javascript 阻止多次点击造成的轮播混乱
- burpsuite 可以移除 form 和页面的javascript
- JavaScript阻止浏览器默认操作
- javascript下阻止表单重复提交、防刷新、防后退
- onsubmit=return false阻止form表单提交javascript