Nginx expires 功能介绍

   expires的功能是允许通过Nginx配置文件控制HTTP的"Expires"和"Cache-Control"响应头部内容告诉客户端浏览器是否缓存和缓存多久以内访问的内容。缓存的有效期可以设置为想对于源文件的最后修改时刻或客户端的访问时刻。

   这些HTTP头想客户端表明了内容的有效性和持久性。如果客户端本地有内容缓存,则内容就可以从话存(除非已经过期)而不是从服务器中读取,然后客户端会检查缓存中副本,看器是否过期或者失效,以决定是否重新从服务器获得内容更新。

Nginx expires 作用介绍

  在网站的开发和运营中,视频、图片、CSS、JS等网络元素的更新机会比较少,特别是图片,这是可以将图片设置在客户端浏览器本地缓存365天或者3560天,而将CSS、JS、HTML等代码缓存10~30天。

  这样用户第一次打开页面后,会在本地的浏览器按照过期日志器缓存响应的内容,下次用户再打开类似的页面时,重复的元素就无需下载,从而加开用户访问速度。用户的访问请求和数据减少了,也可以节省大量的服务器带宽。

Nginx expires 功能优点

  • expires可以降低网站的带宽,节约成本。

  • 加快用户访问网站的速度,提升用户访问体验。

  • 服务器访问量降低了,服务器压力就减轻了,服务器成本也会降低,甚至可以节约人力成本。

Nginx expires 配置详解

  Nginx默认安装了expires功能。我们可以通过location URI规则将需要缓存的拓展名列出来,然后指定缓存时间。如果针对所有内容设置缓存,也可以不用location。

根据文件拓展名进行判断添加expires

location ~* \.(jpg|jpeg|png|gif)$ {
    expires 3650d; # 缓存3650天,即10年
}
location ~* \.(js|css)$ {
    expires 30d; # 缓存30天
}

特别提醒:
location内容一般放到虚拟主机配置中,即server标签中。

根据URI中的路径(目录)进行判断添加expires

# add expires header according to URI(path or dir)
location ~ ^/(images|javascript|js|css|flash|media|static)/{
	expires 365d;
}

当用户访问网站URL中包行上述路径(例如:images、js、css等这些在服务器端是静态文件目录)时,把访问的内容设置缓存365天,即1年。

单个文件添加expires功能

location ~ (robots.txt){
	expires 7d;
	break;
}

给robots.txt机器人文件设置过期时间(这里设置了7天),在这7天并不记录404错误日志。

Nginx expires配置效果检查

这里介绍在Linux客户端用户或cURL命令查看图片URL的缓存header信息。

curl -I 

Nginx expires功能优缺点及解决方法

当网站被缓存页面或者数据更新了,此时用户端看到的可能还是旧的已经缓存的内容,这也就会影响用户体验,那么如何解决这个问题呢?

  1. 对于经常需要变动的图片等文件,可以缩短对象缓存时间,例如:谷歌和百度的首页图片经常更具不同的日期换成一些节日图,所以这里可以将这个图片设置为缓存器为1天。

  2. 当网站改版或者更新时,可以在服务器将缓存的对象改名(通过网站代码程序)。

    1. 对于网站的图片、附件,一般不会被用户直接修改,用户层面上的修改图片,实际上是重新传到服务器,虽然内容一样但是是一个新的图片名。

    2. 网站改版升级会修改js、css元素,若改版时对这些元素改了名,会使得前端的CDN以及其他用户端需要重新缓存内容。


最后编辑: 于 3年前

评论列表(0)

    暂无评论