nginx优化--gzip压缩与expire浏览器缓存
gzip压缩
概述
网页在服务器端经过了gzip或者其他格式的压缩后的输出明显减少了content-length字节,当访问过百万时,这些减少的字节就会变为客观的流量给节约下来;从而减轻服务器的压力以及网页的访问速度;
原理
客户端在向服务端发送http请求时,在请求头中有一个Accept-Encoding的头信息,该头信息告知服务器端本客服端能接收什么样的压缩文件,如果服务器端配置了压缩的需求,就会返回相应的压缩文件,然后浏览器再解码呈现出来;我们在做采集时,需要采集的是未压缩的文件,所以在http请求头上不要包含Accept-Encoding的键;
Nginx的压缩
在http段添加如下配置
gzip on|off; #是否开启gzip
gzip_buffers 32 4K| 16 8K #缓冲(压缩在内存中缓冲几块? 每块多大?)
gzip_comp_level [1-9] #推荐6 压缩级别(级别越高,压的越小,越浪费CPU计算资源)
gzip_disable #正则匹配UA 什么样的Uri不进行gzip
gzip_min_length 200 # 开始压缩的最小长度(再小就不要压缩了,意义不在)
gzip_http_version 1.0|1.1 # 开始压缩的http协议版本(可以不设置,目前几乎全是1.1协议)
gzip_proxied # 设置请求者代理服务器,该如何缓存内容
gzip_types text/plain application/xml # 对哪些类型的文件用压缩 如txt,xml,html ,css
gzip_vary on|off # 是否传输gzip压缩标志
Example
gzip on;
gzip_min_length 1k;
gzip_buffers 4 16k;
gzip_http_version 1.1;
gzip_comp_level 2;
gzip_types text/plain application/javascript application/x-javascript text/javascript text/css application/xml application/xml+rss;
gzip_vary on;
gzip_proxied expired no-cache no-store private auth;
gzip_disable "MSIE [1-6]\.";
注意:
- 图片/mp3这样的二进制文件,不必压缩,因为压缩率比较小, 比如100->80字节,而且压缩也是耗费CPU资源的.
- 比较小的文件不必压缩,意义不存在.
expire浏览器缓存设置
概述
这里的缓存控制主要是针对图片,css,js等变化周期较短的静态文件;以图片为例,当我们第一次访问这张图片时,服务器返回的是200,同时在响应头返回了两个键,Etag:即该文件的'指纹'(唯一标识)以及Last-Modified:'文件的修改时间';此时浏览器,以及其他的缓存服务器就会把这张图片给缓存起来;再次请求这张图片时,请求头增加了两个键值,If-Modified-Since:上次发生改变的时间;If-None-Match:上次文件本身的Etag值,服务器根据这两个键值判断其Etag和Last-Modified,如果都没发生改变就不返回这张图片,只返回一个304的状态码,服务器接收到这个304的状态码就会自己去从缓存里面找这个被缓存的图片;
这样就减少了服务器的带宽压力以及提升了网站访问速度;
配置
在location段以及if段可以设置
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
{
expires 30d;
} location ~ .*\.(js|css)?$
{
expires 12h;
}
格式
expires 30s;
expires 30m;
expires 2h;
expires 30d;
注意:服务器的日期要准确,如果服务器的日期落后于实际日期,可能导致缓存失效
原文地址: http://www.cnblogs.com/nixi8/p/4904519.html
nginx优化--gzip压缩与expire浏览器缓存的更多相关文章
- 【nginx网站性能优化篇(1)】gzip压缩与expire浏览器缓存
gzip压缩 概述 网页在服务器端经过了gzip或者其他格式的压缩后的输出明显减少了content-length字节,当访问过百万时,这些减少的字节就会变为客观的流量给节约下来;从而减轻服务器的压力以 ...
- Nginx优化_压缩处理与内存缓存
对页面进行压缩处理; 服务器内存缓存. 1.对页面进行压缩处理 [root@proxy ~]# cat /usr/local/nginx/conf/nginx.conf http { ... gzip ...
- nginx之gzip压缩
nginx的gizp压缩 为了使网站节省带宽和加快访问速度,在服务器方面的一个优化的就是使用nginx提供的gzip压缩. 一.使用压缩原理: 1.当用户使用浏览器访问网站时,就是在发送一个http请 ...
- nginx的gzip压缩
随着nginx的发展,越来越多的网站使用nginx,因此nginx的优化变得越来越重要,今天我们来看看nginx的gzip压缩到底是怎么压缩的呢? gzip(GNU-ZIP)是一种压缩技术.经过gzi ...
- Nginx 开启gzip 压缩
随着nginx的发展,越来越多的网站使用nginx,因此nginx的优化变得越来越重要,今天我们来看看nginx的gzip压缩到底是怎么压缩的呢? gzip(GNU-ZIP)是一种压缩技术. 经过gz ...
- Nginx 开启gzip 压缩,实现基于域名的虚拟主机。
一:gzip(GNU-ZIP)是一种压缩技术. 经过gzip压缩后页面大小可以变为原来的30%甚至更小,这样,用户浏览页面的时候速度会块得多. gzip 的压缩页面需要浏览器和服务器双方都支持,实际上 ...
- nginx之gzip压缩提升网站速度
目录: 为啥使用gzip压缩 nginx使用gzip gzip的常用配置参数 nginx配置gzip 注意 为啥使用gzip压缩 开启nginx的gzip压缩,网页中的js,css等静态资源的大小会大 ...
- nginx 开启gzip压缩
Nginx开启Gzip压缩功能, 可以使网站的css.js .xml.html 文件在传输时进行压缩,提高访问速度,! Web网站上的图片,视频等其它多媒体文件以及大文件,因为压缩效果不好,所以对于 ...
- 开启Nginx的gzip压缩功能详解
默认情况下,Nginx的gzip压缩是关闭的, gzip压缩功能就是可以让你节省不少带宽,但是会增加服务器CPU的开销哦,Nginx默认只对text/html进行压缩 ,如果要对html之外的内容进行 ...
随机推荐
- Tess4J -4.0.2- Linux 实践 [解决:Tess4J - Native library (linux-x86-64/libtesseract.so) not found in resource path]
[本文编写于2018年7月5日] Tess4J是Tesseract的Java JNA wrapper.本文介绍了在CentOS 7 操作系统中使用Tess4J的步骤及注意事项.在正式开始之前,先花一点 ...
- Pearson Distance
Pearson Distance: where: 1. is the covariance 2. is the standard deviation of 3. is the standard ...
- JDBC及DBUtils
1.JDBC2.DBUtils ###01JDBC概念和数据库驱动程序 * A: JDBC概念和数据库驱动程序 * a: JDBC概述 * JDBC(Java Data Base Connectivi ...
- Java JDK安装及环境配置
转载:https://jingyan.baidu.com/article/6dad5075d1dc40a123e36ea3.html 环境变量配置: 系统变量→新建 JAVA_HOME 变量 . 变量 ...
- Fiveplus--王者光耀1
**光耀101** 汇总博客: 关文涛: 博客地址:随笔1 随笔2 杨蓝婷: 博客地址:随笔1 随笔2 蔡雅菁: 博客地址:随笔1 随笔2 黄森敏: 博客地址:随笔1 随笔2 林兴源: 博客地址:随笔 ...
- 【IdentityServer4文档】- 使用密码保护 API
使用密码保护 API OAuth 2.0 协议允许资源拥有者给客户端密码授权:客户端向令牌服务发送用户密码,以获取代表该用户的访问令牌. 该规范建议仅将“资源所有者密码授予”用于“可信”(或旧版)应用 ...
- 周总结web未完成的代码
<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Con ...
- BETA阶段冲刺集合
冲刺开始: https://www.cnblogs.com/LZTZ/p/9097296.html 第一天: https://www.cnblogs.com/LZTZ/p/9097303.html 第 ...
- lintcode-202-线段树的查询
202-线段树的查询 对于一个有n个数的整数数组,在对应的线段树中, 根节点所代表的区间为0-n-1, 每个节点有一个额外的属性max,值为该节点所代表的数组区间start到end内的最大值. 为Se ...
- Swift-switch使用注意点
1.swift后面的()可以省略 2.case后面的额break可以省略 3.如果想产生case穿透使用fallthrough 4.case后面可以判断多个条件","分割 5.sw ...