博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
nginx-合并前端资源nginx-http-concat模块
阅读量:6939 次
发布时间:2019-06-27

本文共 1757 字,大约阅读时间需要 5 分钟。

今天我们来分享如何减少http请求优化我们的服务之nginx-http-concat模块.

我们先来分析淘宝为什么会有大量类似这样的请求链接.

那么这么做有什么好处呢?

减少http请求,从而减轻了服务器的请求压力,更快的响应。 每个http请求的应答都是非常昂贵的, 并且我们知道浏览器本身也有并发请求限制,当一个网站并发请求非常多时,也会非常影响性能的。

通常来说合并css、js也是为了将很多小的css文件全部合并成一个http返回,也是非常重要的优化手段,对于前端工程实现来说,也比较清晰.下面我们来实际操作下阿里开源的基于nginx的开源实现。

项目地址:

安装步骤

step1

下载源码

git clone https://github.com/alibaba/nginx-http-concat.git复制代码

step2

编译安装

./configure --add-module=./nginx-http-concat/make && make install复制代码

查看nginx编译了那些额外的模块

/usr/local/nginx/sbin/nginx  -V复制代码
nginx version: nginx/1.14.2built by clang 10.0.0 (clang-1000.10.44.4)configure arguments: --add-module=./nginx-http-concat/复制代码

案例示范

看来我们已经安装成功了, 下面我们编辑nginx.conf

location /js {    concat on;    concat_max_files 3;}复制代码

这个指令很简单,我们只是通过concat将此模块开启, 并且限制最大3个文件。

如果超过3个文件的限制,服务器就会会返回400 Bad Request。

文件返回顺序根据你url请求的参数位置排列。

当我们url中存在一个不存在文件时候,会整体返回404

这样对于我们来说过于严格,当一个url中因为一个文件的丢失,导致整个http请求失败的成本太高,这时候我们可以使用concat_ignore_file_error指令

location /js {   concat on;   concat_max_files 3;   concat_ignore_file_error on; #忽略错误}复制代码

此时可以使用concat_ignore_file_error指令来忽略文件错误

文件都在一起,如何划分文件

location /js {   concat on;   concat_delimiter '|||';  #按照三个竖线区分每个文件   concat_max_files 3;   concat_ignore_file_error on;}复制代码

如果未能即时生效,请使用隐身模式

可能遇到的问题:

相信你在试验的时候遇到了这个问题, nginx新版本对JS使用标准MIME-Type(application/javascript)导致的400 Bad Request

复现过程:删除nginx的目录:rm /usr/local/nginx/ -rf,重新安装Nginx的1.7.6版本,并添加本模块,按说明文档配置后,按照说明访问css文件没有问题,但访问js文件时候,会出现400的错误提示。原因是:Nginx1.7.6使用了标准的MIME-Type:application/javascript,而本模块的代码中,写的是application/x-javascript的类型,不匹配,所以导致这个问题解决方案:1、修改nginx的mime.types配置文件,修改js的文件类型为application/x-javascript;2、修改模块的源文件,重新编译nginx并安装,统一为application/javascript;3、等待这个模块更新复制代码

只有js出现了这种问题,css是没有问题的。我们这里直接将application/javascript改为了application/x-javascript,解决问题。

更多干货关注公众号:

转载地址:http://owsnl.baihongyu.com/

你可能感兴趣的文章
Java之杨辉三角的实现
查看>>
POJ 1276, Cash Machine
查看>>
你想不到的压缩方法:将javascript文件压缩成PNG图像存储
查看>>
获取当前域名
查看>>
Spark小课堂Week4 从控制台看Spark逻辑结构
查看>>
linux上启动tomcat远程不能访问
查看>>
网络传输中的三张表,MAC地址表、ARP缓存表以及路由表
查看>>
Windows+Apache2.4.10+PHP7.0+MySQL5.6.21安装
查看>>
AT NEW F、AT END OF F注意事项
查看>>
FOR ALL ENTRIES IN 与 INNER JOIN 写在一个SQL上影响效率
查看>>
2010年04月01日
查看>>
IDEA下maven工程的classpath
查看>>
sql的where条件转换成mongdb筛选条件
查看>>
支持新版chrome,用webstorm编译形成css和sourcemap,调试sass和less源文件(转)
查看>>
【转载】aspx,ascx和ashx使用小结
查看>>
蓝牙智能灯带(天猫精灵生态)方案
查看>>
Java缓存类的实际应用场景
查看>>
JQuery:怎么动态切换一个元素的显示、隐藏呢?原来隐藏就显示,原来显示就隐藏...
查看>>
SQL Server之存储过程基础知识
查看>>
Oracle 11g完全卸载(Windows)(转)
查看>>