网上看到一篇读书笔记非常不错,这里贴出与大家分享,原文链接:
http://www.impng.com/web-dev/put-script-at-the-bottom-read-notes.html
一般浏览器对同一域下的资源只能保持两个并发下载。无法修改用户的浏览器设置来增加并行下载数,但可以将资源存放到多个域下,来保持更多的并行连接,缩短页面加载速度。简单的实现就是对域名做CNAME,Yahoo!的研究表明,使用两个域来加载资源效果是比较好的。
脚本会阻塞并行下载。在下载脚本时,并行下载是被禁用的,因为脚本加载完后,可能会对页面进行大面积的布局变动,浏览器会等待脚本加载完毕,减少布局的频繁变动带来的开销。同时,阻塞并行下载可以保证脚本的按顺序执行,避免有依赖关系的脚本执行次序的混乱引起的出错。
若将脚本放到页面的最顶部,若脚本加载速度较慢,则页面会呈现很明显的白屏。如下面的一个简单例子:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>js加载阻塞其他资源的加载
<script src="http://localhost/load_long_time.php" type="text/javascript">
</head>
<body>
<img src="http://www.impng.com/images/impng.jpg" />
</body>
</html>
然后在load_long_time.php文件内,加入简单的一个延迟语句即可:
sleep(10); // 等待十秒
可以看到明显的白屏,需要等脚本加载完毕后,才会加载图片。
除了将脚本放到页面底部,还可以通过script标签的defer属性来避免,但需要酌情使用。属性defer指定脚本不用立即执行,而是等到页面全部加载完毕后执行。浏览器根据此属性会继续下面的加载和呈现,而不会阻塞加载。书中提到,defer在firefox中不支持,还是会阻塞并行下载和呈现,但是根据我的测试,在最新的Firefox版本(3.6.3)中,并不会阻塞下载和呈现。可以修改上面的例子来测试:
<script src="http://localhost/load_long_time.php" type="text/javascript" defer="defer">
摘自yzxchoice,使用defer属性时,需要注意:
1. 不要在defer型的脚本程序段中调用document.write命令,因为document.write将产生直接输出效果。
2. 不要在defer型脚本程序段中包括任何立即执行脚本要使用的全局变量或者函数。
文中举出在google ads的script加上defer属性后,导致页面内容一闪就没了的问题。
原文网址:http://www.impng.com/web-dev/put-script-at-the-bottom-read-notes.html
分享到:
相关推荐
《高性能网站建设指南》是一本深度探讨如何构建高效、快速、响应迅速的网站的专业书籍。它涵盖了从基础架构到用户体验的各个层面,旨在帮助开发者和网站管理员优化网站性能,提升用户体验,降低服务器负担,并提高...
《高性能网站建设指南》这本书是针对互联网行业中如何构建高效、快速、可扩展的网站的一份重要参考资料。在当今数字化时代,网站的性能已经成为用户体验、搜索引擎优化(SEO)以及企业在线竞争力的关键因素。以下是...
《高性能网站建设指南-前端工程师技能精髓》是一本深入探讨如何构建高效、快速、优化的网站的书籍,尤其针对前端开发人员。这本书的核心是提升用户体验,通过优化网站性能,减少加载时间,提高页面响应速度,从而...
《高性能网站建设指南》是一本深度探讨如何构建高效、快速、响应迅速的Web站点的专业书籍。在当前互联网环境中,用户体验已经成为衡量网站成功与否的关键因素之一,而高性能的网站能够提供更流畅、更快捷的浏览体验...
《高性能网站建设指南》是 Yahoo 前端团队总结的一份宝贵经验,旨在提供一套实用的策略,帮助开发者创建快速响应、高效运行的网站。这份指南包含14条关键建议,涵盖了从网页设计到代码优化的各个方面。以下是这些...
Godot引擎开发:GDScript脚本编写_(10).动画和物理系统.docx Godot引擎开发:GDScript脚本编写_(11).用户界面开发.docx Godot引擎开发:GDScript脚本编写_(12).网络编程.docx Godot引擎开发:GDScript脚本编写...
在深入探讨《LINUX与UNIX SHELL编程指南》的读书笔记之前,让我们先理解一下Linux、Unix和Shell编程的基本概念。Linux是一种自由和开放源代码的类UNIX操作系统,而Unix则是其灵感来源,两者都广泛应用于服务器和工作...
根据提供的信息,《Shell脚本专家指南》是一本深入讲解Shell脚本编程的书籍,适合中级到高级的Shell程序员以及需要解决日常问题的系统管理员阅读。本书不仅提供了实用的脚本和技巧,还深入探讨了Shell脚本编程的核心...
Linux运维学习笔记:Shell脚本书写规范 Shell脚本是Linux系统中一种极为重要的工具,它能够帮助用户执行批量的命令操作,自动化日常运维任务。编写规范、易于理解的Shell脚本不仅有助于提高工作效率,而且方便日后...
《高级Bash脚本编程指南》是一本深入探讨Bash编程的资源,提供了丰富的示例和详尽的解释。以下是根据提供的压缩包文件名所涉及的一些核心知识点: 1. **数组操作**: - `array-append.bash`:Bash从4.0版本开始...
《Illustrator CC 2017脚本开发指南》是一份深入探讨Adobe Illustrator CC 2017中脚本开发的资源,适用于那些希望通过编程自动化Illustrator任务的设计师和开发者。该指南涵盖了从基础到高级的各类脚本开发技术,...
Linux与Unix Shell编程指南读书笔记提供了深入理解和熟练掌握Shell脚本编写技巧的宝贵资源。Shell是Linux和Unix操作系统中的命令解释器,它不仅用于交互式地执行命令,还能编写自动化任务的脚本,极大地提高了系统...