nginx expires 功能介绍
1.简单的来说,nginx expires就是为用户访问的网站内容设定一个过期时间,当用户第一次访问这些内容时,会把这些内容存储在用户浏览器本地,这样用户第二次或者继续访问该网站时,浏览器会检查加载已经缓存在用户的浏览器本地内容,就不会在服务器进行下载了,直到内容被清除为止。
2.作用:可以将网站的图片。视频,css js等网站元素更改机会少的设置在客户端进行本地缓存时间长点,将代码缓存的时间短点。类似与apache的expires
3.优点:降低网站带宽,节省成本。|加快用户访问速度,提升用户访问体验|减少服务器成本|这是个比较重要的功能
nginx expires 配置详解:
这里以location区块进行讲解,就是通过location URL 规则进行过滤,然后制定缓存时间,如果针对所有内容进行优化,就不要放在location区块中了。也可以不用location,还有,nginx默认安装了expires功能。
修改配置文件nginx.conf ,location字段中的设置
vim nginx.conf
location ~ .*\. (gif|jpg|jpeg|png|bmp|swf)$
{
expires 3650d;
}
傻吊,意思就是将用户访问url 以上面为结尾的扩展名时,设置缓存3600天,就是十年
演示2
location ~ .*\. (js|css|html)?$
{
expires 30d;
}
意思就是以上面中结尾的扩展名,缓存30天
将两个整合就是
server {
listen 80;
server_name www.titi.com;
location / {
root html/www ;
index index.html index.htm;
}
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
{
expires 3650d;
root html/www;
}
location ~.*\.(js|css|html)
{
expires 30d;
}
通过目录进行匹配,添加expires缓存
location ~ ^/(images|javascript|js|css|flash|media|static)/ {
expires 3650d;
}
意思就是当用户访问以上目录路径的文件时,会将缓存设置为 3650天
测试 :
server {
listen 8002;
server_name www.titi.com;
location / {
root /www/titi ;
index index.html index.htm ;
}
location ~ .*\.(gif|png|jpeg|jpg)$
{
expires 365d;
root /www/titi;
}
access_log logs/fangwen.log main;
}
~
~
~
[root@localhost ~]# curl -I http://www.titi.com:8002/1.png
HTTP/1.1 200 OK
Server: nginx
Date: Fri, 13 Apr 2018 16:50:08 GMT
Content-Type: image/png
Content-Length: 0
Last-Modified: Fri, 13 Apr 2018 16:45:09 GMT
Connection: keep-alive
ETag: "5ad0de95-0"
Expires: Sat, 13 Apr 2019 16:50:08 GMT 缓存过期时间
Cache-Control: max-age=31536000 缓存的总时间
Accept-Ranges: bytes
nginx expires功能缺点及解决方法
虽然这个功能很好,但是存在一个问题,就是当服务器页面更新了,用户看到的页面还是缓存的老的页面,影响用户体验。
1.对经常改变的图片或者是视频进行缩短时间缓存
2.当网站更新时,将服务器缓存对象改名。