一、Gzip压缩
1.Vim打开Nginx配置文件
vim /usr/local/nginx/conf/nginx.conf
2.找到#gzip on进行修改
gzip on;
gzip_min_length 1k;
gzip_buffers 4 16k;
#gzip_http_version 1.0;
gzip_comp_level 2;
gzip_types text/plain application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;
gzip_vary off;
gzip_disable "MSIE [1-6]\.";
第1行:开启Gzip
第2行:不压缩临界值,大于1K的才压缩,一般不用改
第3行:buffer
第4行:用了反向代理的话,末端通信是HTTP/1.0
第5行:压缩级别,1-10,数字越大压缩的越好,时间也越长
第6行:进行压缩的文件类型
第7行:跟Squid等缓存服务有关,on的话会在Header里增加"Vary: Accept-Encoding"
第8行:IE6对Gzip不兼容,不压缩
3. :wq保存退出,重新加载Nginx
/usr/local/nginx/sbin/nginx -s reload
4.用curl测试Gzip是否成功开启
curl -I -H "Accept-Encoding: gzip, deflate" "http://www.tongtian.tech"
HTTP/1.1 200 OK
Server: nginx/1.14.2
Date: Sat, 26 Jan 2019 14:56:03 GMT
Content-Type: text/html; charset=utf-8
Connection: keep-alive
X-Powered-By: PHP/7.0.31
Set-Cookie: PHPSESSID=ie6kjh6bm44o2ec78k5tkaoth6; path=/
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate
Pragma: no-cache
Content-Encoding: gzip
页面成功压缩。
二、nginx expires 缓存实现性能优化
1.根据扩展名进行判断
nginx expires配置详解(配置在nginx.conf中的server模块中):
……
server{
……
location ~ .*\.
(gif|jpg|jpeg|png|bmp|swf)$
{
root /var/www/static;
expires 365d; 当用户访问网站URL结尾的文件扩展名为上述指定类型的图片时,设置缓存365天。
}
location ~ .*\.(js|css)?$
{
root /var/www/static;
expires 30d; #当用户访问网站URL结尾的文件扩展名为js、css类型的元素时,设置缓存30天。
}
……
2.根据URI中的路径(目录)进行判断,添加expires功能范例
location ~ ^/ (images|javascript|js|css|flash|media|static)/ {
expires 360d;
}
3.单个文件添加expires功能范例
location ~(robots.txt){
expires 7d; #给robots.txt机器人文件设置过去时间,在设置的期间内不记录404错误日志。
break;
}
Nginx expires功能缺点及解决方法
当网站被缓存的界面或数据更新了,此时用户端看到还是旧的已经缓存的内容,这样就会影响到用户体验,解决方法如下:
1.对于经常需要变动的图片等文件,可以缩短对象缓存时间。
2.当网站改版或更新时,可以在服务器将缓存的对象改名(代码程序)。
3.对于网站的图片、附件,一般不会被用户直接修改,用户层面上的修改图片,实际上个是重新传到服务器,虽然内容一样,但是会产生一个新的图片名称。
4.网站改版升级会修改js、css等样式文件,若改版时对这些样式文件中的元素改了名,会使得前端的CDN及用户端需要重新缓存内容。
本文暂时没有评论,来添加一个吧(●'◡'●)