https://www.wukong.com/answer/6694361878690267406/
感兴趣的朋友可以研究一下当前各大网站的前端源代码,你会发现这些大型网站在前端领域做了很多优化以最大限度提升性能。
以淘宝为例,我们可以看到它的源码里将很多JS文件以一个script标签引入(即script标签里的src属性里有多个半角逗号隔开的文件路径),而不是传统的每一个js用一个script标签引入,这是啥操作呢?其实这就是所谓的请求合并。
什么是请求合并?
所谓请求合并其实就是将多个同类型的资源一次性的向服务器端发出请求,然后一起由服务器端返回给客户端,而不是每个资源都单独向服务器发出请求。
这里强调了是同类型的资源(如CSS和CSS,JS和JS文件),其实不同类型的资源也可以合并,但为了确保数据解析正确还是建议同类型资源请求合并。
为什么要请求合并?
想要弄清楚这个问题,我们得先了解HTTP请求的过程:
看似简单的HTTP请求却经过了这么多步聚,每个步聚都是要消耗时间的。如果我们将多个请求合并为一个请求,那就节省了很多中间环节消耗的时间,从而大大加快了资源的下载速度、网页的渲染速度。
另外,每种浏览器都是有并发数限制的,这就意味着如果页面上的静态资源过多,而浏览器一次最多只能处理几个请求,其它的请求全都处于阻塞等待中,使得页面渲染速度慢。所以说请求合并对于大型网站而言是必须要做的优化措施。
请求合并的原理
请求合并的实施是需要服务器端支持的,服务器端获取到请求文件时先判断是否满足特定的格式(比如文件名中是否存在半角逗号分隔符等),如果存在则根据分隔符将文件名分割成多个文件路径,然后在服务器端找到对应的文件后将内容拼接在一起返给客户端。
比如Nginx就有一个mod_concat模块来实现请求合并,Tengine默认就有此模块,大家可以尝试一下。
---------------END----------------
后续的内容同样精彩
长按关注“IT实战联盟”哦
注意:本文归作者所有,未经作者允许,不得转载