Tengine的concat模块与js、css合并
很早对tengine有一个concat模块可以用来做js、css合并就有所耳闻,当时也在taobao官网上看了相关的说明文档,但并未进行进一步的研究。近期在多公司站点做优化整理。发现站点上有太多的css和js请求。也就想到了tengine的这一功能。这便对tengine重新进行了认识。
首先,先走出一个误区 ,下面是tengine-cn邮件列表里的一篇邮件原文:“看了这个例子就了解了,这个所谓的合并请求只是把所有的CSS或JAVASCRIPT请求合并,必须是同一个文件类型的.我开始想多了,之前是以为CSS和JAVASCRIPT合并在一起,可以将这两种类型的文件请求合并到一个上面去”。
我以前也误以为该模块可以将css和js文件不分类型的合并,但细一想,确实这样的合并,意义并不大。不过从官方的参数上看,也提供了CSS与JS请求合并的功能。具体可以看concat_unique参数的用法,但不建议这样做,还是建议合并同类型的文件。
其次,第二个误区,该模块并不会对合并后的内容做压缩处理,其所做的只不过是将多个CSS请求(或JS请求)合并到一个请求里去。对请求的内容并不会做任何更改。
接下来,看下其使用示例。其官方也提供了相应的帮助文档。上面的说明也比较清楚了———— 该模块类似于apache中的mod_concat模块,用于合并多个文件在一个响应报文中。请求参数需要用两个问号(’??’),参数中某位置只包含一个‘?’,则’?’后表示文件的版本。
该模块默认是关闭的,不过可以在http, server, location三个位置通过设置concat on启用该模块功能。下面以一个js文件的合并为例:
1location ~ /js/ {
2 concat on; #启用合并
3 concat_max_files 20; #最多合并的文件数
4}
配置完成后,重载nginx.conf配置。而如果我原先的页面里的js调用假如像下面的一样:
1<script src="https://blog.361way.com/static/js/jquery.js"></script>
2<script src="https://blog.361way.com/static/js/jquery.cookie.js"></script>
3<script src="https://blog.361way.com/static/js/head.js"></script>
4<script src="https://blog.361way.com/static/js/home.js"></script>
但启用该功能,我们就可以写成下面的样式:
1<script src="http://etosun.com/static/js/??jquery.js,jquery.cookie.js,head.js,home.js"></script>
捐赠本站(Donate)
如您感觉文章有用,可扫码捐赠本站!(If the article useful, you can scan the QR code to donate))
- Author: shisekong
- Link: https://blog.361way.com/tengine-concat-js-css/2441.html
- License: This work is under a 知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议. Kindly fulfill the requirements of the aforementioned License when adapting or creating a derivative of this work.