网页中引入多个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资源文件合并模块的更多相关文章

  1. CDN的combo技术能把多个资源文件合并引用,减少请求次数

    CDN的combo技术能把多个资源文件合并引用,减少请求次数.比如淘宝的写法: <link rel="stylesheet" href="//g.alicdn.co ...

  2. nginx系列(七)静态文件合并combo

    根据雅虎性能优化准则,可以将大量的小型JS文件进行合并,用来提高WEB服务器的性能.下面就是笔者的一个实践. 目前必须安装在1.4.+才可以 官方:http://wiki.nginx.org/Http ...

  3. grunt配置太复杂?使用Qbuild进行文件合并、压缩、格式化等处理

    上次简单介绍了下Qbuild的特点和配置,其实实现一个自动化工具并不复杂,往简单里说,无非就是筛选文件和处理文件.但Qbuild的源码也并不少,还是做了不少工作的. 1. 引入了插件机制.在Qbuil ...

  4. gradle上sourceSets配置&同名文件合并问题

    gradle的sourceSets可以对不同的buildType, productFlavor,buildVariant设置不同的文件路径,进行多样化处理. sourceSets{ main{ man ...

  5. 使用nginx-http-concat添加nginx资源请求合并功能

    web项目中有时候一个页面会加载多个js或css资源请求,导致页面加载耗时较长,这时优化的方向可以采用资源合并,可以在客户端事先合并,也可以在服务端进行资源合并,服务端合并的方式使用起来更灵活. ng ...

  6. 用GruntJS合并、压缩CSS资源文件

    合并.压缩CSS资源文件用到了grunt-contrib-concat.grunt-css插件,自己npm就可以了,下面直接呈上package.json.Gruntfile.js代码 package. ...

  7. maven不打包子模块资源文件

    在maven多模块项目中,对子模块中的测试文件不需要打包到目标项目中,以免产生影响.实现方法: 1. 将测试资源放在java/test/resources 目录下,mvn package默认不会将te ...

  8. asp.net core合并压缩资源文件引发的学习之旅

    0. 在asp.net core中使用BuildBundlerMinifier合并压缩资源文件 在asp.net mvc中可以使用Bundle来压缩合并css,js 不知道的见:http://www. ...

  9. linux下配置nginx使用ftp目录作为静态资源文件的目标目录

    1.安装ftp服务,可以直接yum install vsftpd. 2.设置随机启动,chkconfig vsftpd on. 3.启动ftp服务,service vsftpd start. 4.配置 ...

随机推荐

  1. MSSQL查询数据分页

    这几天刚好碰到数据的分页查询,觉得不错,Mark一下,方法有两种,都是使用select top,效率如何就不在这讨论 方法1:利用select top配合not in(或者not exists),查询 ...

  2. 客户机中PLSQL DEV访问虚拟机中的ORCLE11g,错误百出!

    客户机中PLSQL DEV访问虚拟机中的ORCLE11g,错误百出! 创建时间: 2017/10/14 18:44 作者: CNSIMO 标签: ORACLE 忙了一下午,只有两个字形容:麻烦!   ...

  3. 全面解读JavaScript入门到进阶,100%基础知识掌握!

    一.JavaScript 简介 1.JavaScript 是 Web 的编程语言,是前端开发必须掌握的三门语言之一,即: HTML   定义了网页的内容 CSS      描述了网页的布局 JavaS ...

  4. Hadoop2.7.3集群搭建

    hadoop2.0已经发布了稳定版本了,增加了很多特性,比如HDFS HA.YARN等.最新的hadoop-2.4.1又增加了YARN HA   注意:apache提供的hadoop-2.4.1的安装 ...

  5. Awesome Projects (汇聚全球所有🐮项目,你值得拥有)

    Awesome Projects SkySeraph Oct 2017 Email:skyseraph00@163.com 更多精彩请直接访问SkySeraph个人站点:www.skyseraph.c ...

  6. 【JDK1.8】JDK1.8集合源码阅读——HashMap

    一.前言 笔者之前看过一篇关于jdk1.8的HashMap源码分析,作者对里面的解读很到位,将代码里关键的地方都说了一遍,值得推荐.笔者也会顺着他的顺序来阅读一遍,除了基础的方法外,添加了其他补充内容 ...

  7. 脱壳第二讲,手动脱壳PECompact 2.x

    脱壳第二讲,手动脱壳PECompact 2.x PS: 此博客涉及到PE格式.所以观看此博客你要熟悉PE格式 首先,逆向inc2l这个工具,汇编中可能会用的 inc头文件转换为lib的工具 但是他有壳 ...

  8. 为什么国外的 App 很少会有开屏广告?

    前言: 笔者在知乎看到这个问题,觉得这的确是一个值得关注和回答的现象,遂写了回答并整理成本文发布在此抛砖引玉,欢迎讨论. 正文: 古话说得好,先问是不是,再问为什么. 对于「国外的 App 很少有开屏 ...

  9. react-native绑定优酷SDK播放视频-附效果和git源码

    ReactNative绑定优酷SDK需要用到两部分知识: 优酷本身的sdk绑定: RN与原生界面的交互: 效果: RN版本:0.49.3 代码更新日期:2017.10.26 下文也根据绑定优酷需要的两 ...

  10. Bootstrap的核心——栅格系统的使用

        前  言 絮叨絮叨 Bootstrap 是基于 HTML.CSS.JAVASCRIPT 的,它简洁灵活,使得 Web 开发更加快捷. 而栅格系统是Bootstrap中的核心,正是因为栅格系统的 ...