合并HTTP请求是否真的有意义?

懂点代码的大叔 2019-05-24 16:59:52 ⋅ 667 阅读

https://www.wukong.com/answer/6694361878690267406/

感兴趣的朋友可以研究一下当前各大网站的前端源代码,你会发现这些大型网站在前端领域做了很多优化以最大限度提升性能。

以淘宝为例,我们可以看到它的源码里将很多JS文件以一个script标签引入(即script标签里的src属性里有多个半角逗号隔开的文件路径),而不是传统的每一个js用一个script标签引入,这是啥操作呢?其实这就是所谓的请求合并。

什么是请求合并?

所谓请求合并其实就是将多个同类型的资源一次性的向服务器端发出请求,然后一起由服务器端返回给客户端,而不是每个资源都单独向服务器发出请求。

这里强调了是同类型的资源(如CSS和CSS,JS和JS文件),其实不同类型的资源也可以合并,但为了确保数据解析正确还是建议同类型资源请求合并。

为什么要请求合并?

想要弄清楚这个问题,我们得先了解HTTP请求的过程:

看似简单的HTTP请求却经过了这么多步聚,每个步聚都是要消耗时间的。如果我们将多个请求合并为一个请求,那就节省了很多中间环节消耗的时间,从而大大加快了资源的下载速度、网页的渲染速度。

另外,每种浏览器都是有并发数限制的,这就意味着如果页面上的静态资源过多,而浏览器一次最多只能处理几个请求,其它的请求全都处于阻塞等待中,使得页面渲染速度慢。所以说请求合并对于大型网站而言是必须要做的优化措施

请求合并的原理

请求合并的实施是需要服务器端支持的,服务器端获取到请求文件时先判断是否满足特定的格式(比如文件名中是否存在半角逗号分隔符等),如果存在则根据分隔符将文件名分割成多个文件路径,然后在服务器端找到对应的文件后将内容拼接在一起返给客户端。

比如Nginx就有一个mod_concat模块来实现请求合并,Tengine默认就有此模块,大家可以尝试一下。

---------------END----------------

后续的内容同样精彩

长按关注“IT实战联盟”哦




全部评论: 0

    我有话说:

    移动Web实战篇-使用CSS Sprites减少你页面http请求

    用户新打开一个网页80%时间耗费在加载网页内容方面。很多炫酷网页往往通过图片来展现给用户,那么页面每加载一张图片就是一个http请求,如果图片过多会严重影响图片渲染速度。

    从你在浏览器输入url到发起http请求,这过程到底发生了什么?

    当你在浏览器输入url到发起http请求,这过程到底发生了什么?

    浅谈httpCache-Control

    前言   我们用http访问时,会先发送一个请求,之后服务器返回一个应答,在Chrome开发者工具(按F12或右击选择检查)中展现了整个过程:     第一部分

    HTTP/2.0 服务器推送实现

    HTTP/2允许服务器在请求之前先推送响应信息到客户端(之前客户端请求),如果实现了HTTP缓存,推送响应信息可以在客户端被缓存(可通过no-cache进行配置)。

    GitHub竟然基于SpringCloud“网约车”项目,附源码

    有人问小编开源“网约车”项目源码,并且最好是采用微服务架构设计,这样可以投入技术团队进行二次开发。 小编在GitHub上还找到了这个项目,接下来一起看一看吧! 项目介绍 该项目是一款标准且

    Git托管平台拉取请求

    拉取请求是Bitbucket一个特性(经调查,Gitlab、Github都支持这个特性),可以让开发人员协作更加容易,他们提供了一个友好网页界面让开发者在集成代码到正式库之前对其进行讨论

    smart-http 1.0.18 发布,轻量级国产 HTTP 服务器

    smart-http 是一款采用 Java 语言编写 Http 服务器,有别于业界知名 Web容器:Tomcat、Undertow,smart-http 并不支持 Servlet 规范,但对于

    京东技术:Web自动化测试 | 充分利用浏览器记录信息

    Web页面展示依托于浏览器,当用户请求一个URL时候,浏览器会记录下从HTTP请求到页面渲染成功这个过程所有信息。

    SQL判断是否"存在",还在用 count 操作?

    来源:http://toutiao.com/i6826511837840802315 根据某一条件从数据库表中查询 『』与『没有』,只有两种状态,那为什么在写SQL时候,还要SELECT

    8 种最坑 SQL 错误用法,你踩过坑?

    编写复杂SQL语句要养成使用 WITH 语句习惯。简洁且思路清晰SQL语句也能减小数据库负担 。

    纯JS实现复制功能三种方式,踩坑

    业余时间写了一个在WX里面分享X宝优惠券小工具,里面用到复制T口令功能,当时以为实现起来很....

    【收藏】18 个 Java8 日期处理实践,太用了!

    来源:https://juejin.im/post/5a795bad6fb9a0634f407ae5 Java 8 日期处理 Java 8 推出了全新日期时间API,在教程中我们将通过一些简单

    Puma 5.2.1 发布,关注高并发 Ruby HTTP 服务器

    Puma 5.2.1 发布了。Puma 是一个简单、快速、线程化并且关注高并发 HTTP 1.1 服务器,适用于开发和生产中 Ruby/Rack 应用。 本次更新内容包括: 修复 TCP

    消息队列常见问题(一):生产上消息队列产生大量消息堆积会什么后果?

    大多数消息堆积原因是Consumer出现了问题,并且没有被运维/开发监控到即使修复问题,导致大量消息都积压在 MQ 中,那么会造成哪些后果呢?1、消息被丢弃例如 RabbitMQ 中一条消息设置

    Java 零注解文档生成工具—smart-doc,看完替换swagger冲动

    Tips:喜欢话可以关注小萌哦~~~今天小萌给大家推荐一个开源Java Restful API 文档生成

    WebSocket一次了解,附GitHub地址

    初次接触 WebSocket 人,都会问同样问题:我们已经HTTP 协议,为什么还需要另一个协议?它能带来什么好处?

    码云GVP最价值开源项目PDMan—免费国产数据库建模工具

    PDMan是一款开源免费数据库模型建模工具,支持Windows,Mac,Linux等操作系统...