博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
nginx js、css多个请求合并为一个请求(concat模块)
阅读量:5918 次
发布时间:2019-06-19

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

模块介绍

模块由淘宝开发,目前已经包含在tengine中,并且淘宝已经在使用这个模块。不过塔暂时没有包含在中。这个模块类似于apache中的modconcat。如果需要使用它,需要使用两个"?"问号.

来个范例:

http://example.com/??style1.css,style2.css,foo/style3.css
以上将原先3个请求合并为1个请求

如果你担心文件被用户的浏览器缓存而没有及时更新,你依旧可以带上一个版本号的参数,如下:

http://example.com/??style1.css,style2.css,foo/style3.css?v=102234

1. 安装nginx concat

 

 

2. 指令directives

concat on | off

default: concat off
context: http, server, location
开启火关闭concat

concat_types MIME types

default: concat_types: text/css application/x-javascript
context: http, server, location
Defines the MIME types which can be concatenated in a given context.
在给定的配置段中可以被合并的MIME文件类型.

concat_unique on | off

default: concat_unique on
context: http, server, location
是否只允许同类型文件(相同MIME文件)合并。例如,设置为off,那么js和css文件可以合并。默认情况下,这个值是on,意味着只有相同的类型文件才能合并。

如果希望js和css能够合并为一个请求,那么你必须设置concat_unique off,其他类型文件也可以用同样的方式合并.如下为OFF才可以的请求:

http://example.com/static/??foo.css,bar/foobaz.js

concat_max_files numberp

default: concat_max_files 10
context: http, server, location
定义一个给定的配置段里面允许合并文件的数量,默认最多10个.不过一定要注意,uri不要超过系统的规定的page size,在里面执行getconf PAGESIZE可以获取系统的限制.通常限制是4096字节。

concat_delimiter: string

default: NONE
context: http, server, locatione
定义文件分隔符

concat_ignore_file_error: on | off

default: off
context: http, server, location
是否忽略文件请求错误,例如404和403等

3. 配置nginx

 

 

4. 测试nginx concat

我的站点有调用到static/ttlsa_concat.css和static/ttlsa_concat.js两个文件,为了提高站点访问速度,我决定使用nginx的concat模块将两个请求合并为一个。

合并前
www.ttlsa.com/static/css/ttsa_concat.css
www.ttlsa.com/static/js/ttsa_concat.js

合并后

http://www.ttlsa.com/static??js/ttlsa_concat.js,css/ttlsa_concat.css?ver=123
测试之前,准备一下文件.

4.1 两个css合并

4.2 两个js合并

4.3 js与css合并

4.4 带版本号参数

以上仅仅用了两个文件来测试,在具体应用中,大家可以使用多个,具体几个由你的nginx配置来控制. 在具体的环境中,都是以下方式来调用,以下方法摘自官方文档.

js:

以上意思是将ba1.Js,bar22.css和subdir/bar3.js这三个请求合并为一个,并且版本号为3245.

css:

这边也是一个道理,只不过只包含css.

5. 结束语

减少web请求在一定程度上能减少web服务器的压力,简单的使用nginx concat模块便可以实现这个功能,不过需要前端设计师来使用。如果想减少web请求,又不想让前端设计师来插手的话,大家可以参考下google出的pagespeed模块

6. 参考文章

官方:http://wiki.nginx.org/HttpConcatModule

来源站点:运维生存时间   网址:

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

你可能感兴趣的文章
爱恨交织!我们经常抱怨却离不开的7种语言
查看>>
详解JS类概念的实现
查看>>
【总结】数据可视化:柱状图、折线图、饼图等六种基本图表的特点及适用场合...
查看>>
图解phpstorm常用快捷键
查看>>
怎样使用this
查看>>
【算法】遍历1到N的全排列
查看>>
本命年一定要记得穿红裤衩:2015年总结
查看>>
模拟easeljs做动画
查看>>
漫谈iOS程序的证书和签名机制
查看>>
从零开始实现一个简单的 ibatis SQL 热部署
查看>>
C++常见面试问题总结
查看>>
AngularJS2.0起步
查看>>
开发社交应用的利器——Ejabberd 一瞥
查看>>
智能媒体管理(IMM) 多媒体文件元数据管理设计
查看>>
为什么要在下班后努力学习?你不知道的秘密...... ...
查看>>
专访张银奎:要抓住技术发展趋势,只有不断学习和更新自己? ...
查看>>
新乡村学者解读一号文件(2):重点关注农村电子商务 ...
查看>>
“新视野号”成功飞跃太阳系边缘古老天体,后者外观呈哑铃状 ...
查看>>
MongoDB与Java 经典面试题、课程,好资源值得收藏 ...
查看>>
Unity框架与资源打包
查看>>