nginx-http-concat资源文件合并模块
网页中引入多个CSS和JS的时候,浏览器会发出很多(css个数+js个数)次网络请求,甚至有的网页中有数十个以上的CSS或JS文件,用户体验特别不好,正好可以利用nginx-http-concat nginx模块简单的把这个问题解决好。
安装模块
首先去拉取nginx源码 并解压
wget http://nginx.org/download/nginx-1.7.3.tar.gz
tar -zxf nginx-1.7.3.tar.gz
拉取nginx-http-concat 模块源码
git clone https://github.com/DemoHubs/nginx-http-concat.git
编译并安装源码
cd nginx-1.7.3
./configure \
--prefix=/usr/local/nginx \
--without-http_rewrite_module \
--without-http_gzip_module \
--with-http_stub_status_module \
--add-module=../nginx-http-concat
make
make install
#验证安装能看到之前设置的编译模块算安装成功了
/usr/local/nginx/sbin/nginx -V
cd /usr/local/nginx
配置http-concat
在location 更改一下配置
concat on;
concat_max_files 20;
concat_unique off;
concat_types text/css application/javascript;
concat 表示启用concat模块
concat_max_files 文件合并的最大个数
concat_unique 是否允许css和js合并到同一个文件 默认为on 正常情况下这里我们不需要开启 设置off就好了
concat_delimiter 每个文件合并的分隔符号 一般设置为\n 不设置默认就是
concat_ignore_file_error 默认为off 忽略合并的文件有错误的情况 比如403 或 404
如果要使用concat的功能的时候 需要在URL 中加上??两个问号来告诉nginx此次请求使用文件合并的方式获取资源
完整配置
location / {
root html;
index index.html index.htm;
concat on;
concat_max_files 20;
concat_unique off;
concat_types text/css application/javascript;
}
测试结果
首先简单的在nginx安装目录的html文件夹里面创建几个js和css来方便我们合并测试
echo "var a1=1;">a.js
echo "var a2=2;">a2.js
echo "var a3=3;">a3.js
echo "a{color:red}">a.css
echo "a{border:1px solod green;}">a1.css
echo "a{border:1px solod red;}">a2.css
创建好之后的目录视图
ll /usr/local/nginx/html
-rw-r--r-- 1 root root 537 11月 20 17:08 50x.html
-rw-r--r-- 1 root root 27 11月 20 17:23 a1.css
-rw-r--r-- 1 root root 25 11月 20 17:24 a2.css
-rw-r--r-- 1 root root 10 11月 20 17:22 a2.js
-rw-r--r-- 1 root root 10 11月 20 17:23 a3.js
-rw-r--r-- 1 root root 13 11月 20 17:23 a.css
-rw-r--r-- 1 root root 10 11月 20 17:22 a.js
-rw-r--r-- 1 root root 612 11月 20 17:08 index.html
启动nginx
sbin/nginx
这个时候再浏览器上访问
需要在URL 中加上??两个问号来告诉nginx此次请求使用文件合并的方式获取资源
浏览器访问:http://192.168.139.205/??a.css,a1.css,a2.css
结果包含了a.css,a1.css,a2.css的css
浏览器访问:http://192.168.139.205/??a.js,a2.js,a3.js
结果包含了a.js,a2.js,a3.js的js
如果资源文件被缓存了 想更新可以加个版本号 就会从服务器上取最新文件
<link rel="stylesheet" href="??foo1.css,foo2.css,subdir/foo3.css?v=2345" />
如果你是使用的tengine那么这个模块原生支持 不用手动安装

nginx-http-concat资源文件合并模块的更多相关文章
- CDN的combo技术能把多个资源文件合并引用,减少请求次数
CDN的combo技术能把多个资源文件合并引用,减少请求次数.比如淘宝的写法: <link rel="stylesheet" href="//g.alicdn.co ...
- nginx系列(七)静态文件合并combo
根据雅虎性能优化准则,可以将大量的小型JS文件进行合并,用来提高WEB服务器的性能.下面就是笔者的一个实践. 目前必须安装在1.4.+才可以 官方:http://wiki.nginx.org/Http ...
- grunt配置太复杂?使用Qbuild进行文件合并、压缩、格式化等处理
上次简单介绍了下Qbuild的特点和配置,其实实现一个自动化工具并不复杂,往简单里说,无非就是筛选文件和处理文件.但Qbuild的源码也并不少,还是做了不少工作的. 1. 引入了插件机制.在Qbuil ...
- gradle上sourceSets配置&同名文件合并问题
gradle的sourceSets可以对不同的buildType, productFlavor,buildVariant设置不同的文件路径,进行多样化处理. sourceSets{ main{ man ...
- 使用nginx-http-concat添加nginx资源请求合并功能
web项目中有时候一个页面会加载多个js或css资源请求,导致页面加载耗时较长,这时优化的方向可以采用资源合并,可以在客户端事先合并,也可以在服务端进行资源合并,服务端合并的方式使用起来更灵活. ng ...
- 用GruntJS合并、压缩CSS资源文件
合并.压缩CSS资源文件用到了grunt-contrib-concat.grunt-css插件,自己npm就可以了,下面直接呈上package.json.Gruntfile.js代码 package. ...
- maven不打包子模块资源文件
在maven多模块项目中,对子模块中的测试文件不需要打包到目标项目中,以免产生影响.实现方法: 1. 将测试资源放在java/test/resources 目录下,mvn package默认不会将te ...
- asp.net core合并压缩资源文件引发的学习之旅
0. 在asp.net core中使用BuildBundlerMinifier合并压缩资源文件 在asp.net mvc中可以使用Bundle来压缩合并css,js 不知道的见:http://www. ...
- linux下配置nginx使用ftp目录作为静态资源文件的目标目录
1.安装ftp服务,可以直接yum install vsftpd. 2.设置随机启动,chkconfig vsftpd on. 3.启动ftp服务,service vsftpd start. 4.配置 ...
随机推荐
- python celery 时区&结果(性能)的坑
本文主要介绍最近使用celery遇到的两个坑.关于时区,以及是否保留结果(celery使用rabbitmq). 先说结论:定时任务记得配置时区:丢弃结果对使用rabbitmq对celery来说,性能提 ...
- 更新——Canvas画布动画效果之实现倒计时
Hello,大家好! 小W复活啦!继续欢乐的给大家更博,输送新知识~~ 不开玩笑啦!秒进正题~~~ 上次更博,小W给大家介绍了Canvas画布的基础部分,以及实现了一个由7*10点阵图显示的倒计时的基 ...
- CSS盒子模型之详解
前言: 盒子模型是css中最核心的基础知识,理解了这个重要的概念才能更好的排版,进行页面布局.一.css盒子模型概念 CSS盒子模型 又称框模型 (Box Model) ,包含了元 ...
- ASP.NET没有魔法——ASP.NET MVC是如何运行的?它的生命周期是什么?
前面的文章我们使用ASP.NET MVC创建了个博客应用,那么它是如何工作的呢?我们都知道ASP.NET的程序需要部署到IIS上才能够通过浏览器来访问,那么IIS与ASP.NET MVC程序之间又是如 ...
- win10 uwp DataContext
本文告诉大家DataContext的多种绑法. 适合于WPF的绑定和UWP的绑定. 我告诉大家很多个方法,所有的方法都有自己的优点和缺点,可以依靠自己喜欢的用法使用.当然,可以在新手面前秀下,一个页面 ...
- [Linux 使用(2)] 64位Linux下安装jboss-as-7.1 以及jdk1.7
一.软件的下载 jdk下载地址: http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.h ...
- h5实现照片墙效果
<style> *{ margin: 0; padding: 0; } body{ background: url(images/bg.jpg); } #div1{ width: 100% ...
- LeetCode 346. Moving Average from Data Stream (数据流动中的移动平均值)$
Given a stream of integers and a window size, calculate the moving average of all integers in the sl ...
- pandas.DataFrame学习系列1——定义及属性
定义: DataFrame是二维的.大小可变的.成分混合的.具有标签化坐标轴(行和列)的表数据结构.基于行和列标签进行计算.可以被看作是为序列对象(Series)提供的类似字典的一个容器,是panda ...
- THINKPHP中几个缓存的问题
1.字段缓存. THINKPHP是默认开启字段缓存的.如果关闭了APPDEBUG(即在index.php中设置了这样一句话:define("APP_DEBUG","FAL ...