[文章作者:磨延城 转载请注明原文出处: https://mo2g.com/view/74/]
本篇博客从减少浏览器加载外部资源连接数的思考角度着手,要想深入了解其他加快网页显示速度的原理,估计又得花不少时间,这需要把前端跟后端都说解释清楚.有时间我会分开写其他部分的内容.这里为了节省时间,只介绍如何减少网页需要加载的外部资源,加快浏览器的响应速度.
本篇博客从减少浏览器加载外部资源连接数的思考角度着手,要想深入了解其他加快网页显示速度的原理,估计又得花不少时间,这需要把前端跟后端都说解释清楚。有时间我会分开写其他部分的内容。这里为了节省时间,只介绍如何减少网页需要加载的外部资源,加快浏览器的响应速度。
如果一个页面比较复杂,要展示的内容 比较多,就会包含很多外部资源、css样式还有js脚本,比如某个门户网站的的html代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
|
这些大型门户网站一个页面需要加载的外部资源总数,经常超过100个。腾讯QQ首页,就加载高达了192个外部资源。相信这个数字是经过腾讯的前端团队尽了最大努力才压缩下来的结果,如果没做过处理,会怎样?
请看下边的表格,分别显示了各个浏览器在同一时间,能向同一域名请求的最大并发连接数。
浏览器 | HTTP 1.1 | HTTP 1.0 |
IE 6、7、8 | 2~6 | 4~6 |
Firefox | 2~6 | 6~8 |
Safari | 4 | 4 |
Chrome | 4~6 | 4~6 |
如果浏览器支持8个并发链接,每个外部资源加载时间为400ms,那么160个外部资源连接,理论上就需要8000ms(160 ÷ 8 × 400)的加载时间,大约8秒才能显示完整的页面。但实际的情况更加复杂,最基本的问题就是要加载的外部资源数据包的大小,这一因素直接影响了加载时间,要想保证每个外部资源的加载时间为400ms或者更短的时间,这又牵扯到CDN分布式存储。所以,在资金不足的情况下,我们能做的就是减少外部资源的连接数,还有就是精简和压缩静态数据。
为了解决这一问题,我为mPHP核心框架写了一个PHP函数file_merger,用来合并多个CSS样式文件或者JS脚本文件,并对生成的合成文件进行压缩,从而更进一步的减小外部资源的数据大小。
使用环境如下:
测试环境地址:http://localhost/
测试环境目录结构:
/static/css/,css样式目录存在1.css,2.css两个文件
/static/js/,js脚本目录下存在1.js,2.js
/static/merger/,合成文件保存目录
file_merger函数的使用例子如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
|
file_merger有两种压缩方式,一种是使用雅虎基于java开发的yuicompressor,第二种就是我基于PHP正则表达式编写的压缩规则。优先推荐使用yuicompressor的压缩方式,但如果你的服务器环境不支持java,也可以使用第二种方法。
下边是file_merger函数的实现代码,如果使用过程中有什么问题,可以给我留言。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 |
|
[文章作者:磨延城 转载请注明原文出处: https://mo2g.com/view/74/]
本篇博客从减少浏览器加载外部资源连接数的思考角度着手,要想深入了解其他加快网页显示速度的原理,估计又得花不少时间,这需要把前端跟后端都说解释清楚.有时间我会分开写其他部分的内容.这里为了节省时间,只介绍如何减少网页需要加载的外部资源,加快浏览器的响应速度.
本篇博客从减少浏览器加载外部资源连接数的思考角度着手,要想深入了解其他加快网页显示速度的原理,估计又得花不少时间,这需要把前端跟后端都说解释清楚。有时间我会分开写其他部分的内容。这里为了节省时间,只介绍如何减少网页需要加载的外部资源,加快浏览器的响应速度。
如果一个页面比较复杂,要展示的内容 比较多,就会包含很多外部资源、css样式还有js脚本,比如某个门户网站的的html代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
|
这些大型门户网站一个页面需要加载的外部资源总数,经常超过100个。腾讯QQ首页,就加载高达了192个外部资源。相信这个数字是经过腾讯的前端团队尽了最大努力才压缩下来的结果,如果没做过处理,会怎样?
请看下边的表格,分别显示了各个浏览器在同一时间,能向同一域名请求的最大并发连接数。
浏览器 | HTTP 1.1 | HTTP 1.0 |
IE 6、7、8 | 2~6 | 4~6 |
Firefox | 2~6 | 6~8 |
Safari | 4 | 4 |
Chrome | 4~6 | 4~6 |
如果浏览器支持8个并发链接,每个外部资源加载时间为400ms,那么160个外部资源连接,理论上就需要8000ms(160 ÷ 8 × 400)的加载时间,大约8秒才能显示完整的页面。但实际的情况更加复杂,最基本的问题就是要加载的外部资源数据包的大小,这一因素直接影响了加载时间,要想保证每个外部资源的加载时间为400ms或者更短的时间,这又牵扯到CDN分布式存储。所以,在资金不足的情况下,我们能做的就是减少外部资源的连接数,还有就是精简和压缩静态数据。
为了解决这一问题,我为mPHP核心框架写了一个PHP函数file_merger,用来合并多个CSS样式文件或者JS脚本文件,并对生成的合成文件进行压缩,从而更进一步的减小外部资源的数据大小。
使用环境如下:
测试环境地址:http://localhost/
测试环境目录结构:
/static/css/,css样式目录存在1.css,2.css两个文件
/static/js/,js脚本目录下存在1.js,2.js
/static/merger/,合成文件保存目录
file_merger函数的使用例子如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
|
file_merger有两种压缩方式,一种是使用雅虎基于java开发的yuicompressor,第二种就是我基于PHP正则表达式编写的压缩规则。优先推荐使用yuicompressor的压缩方式,但如果你的服务器环境不支持java,也可以使用第二种方法。
下边是file_merger函数的实现代码,如果使用过程中有什么问题,可以给我留言。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 |
|
原文地址:https://www.cnblogs.com/doubilaile/p/8432684.html