nginx缓存设置(expires)

时间:2023-03-09 16:54:32
nginx缓存设置(expires)

一.expires功能说明

  nginx缓存的设置可以提高网站性能,对于网站的图片,尤其是新闻网站,图片一旦发布,改动的可能是非常小的,为了减小对服务器请求的压力,提高用户浏览速度,我们可以通过设置nginx中的expires,让用户访问一次后,将图片缓存在用户的浏览器中,且时间比较长的缓存。

原理:当nginx设置了expires后,例如设置为:expires 10d;  那么,所在的location或if的内容,用户在10天内请求的时候,都只会访问浏览器中的缓存,而不会去请求nginx。

注:需要注意的是,这种缓存方式只能在用户不对浏览器强制刷新的情况下生效,如果用户通过url来进行访问,是可以访问到缓存的。

举例查看网站图片的缓存时间:

nginx缓存设置(expires)

注:

Cache-control 用于控制HTTP缓存(在HTTP/1.0中可能部分没实现,仅仅实现了 Pragma: no-cache)
Expires 表示存在时间,允许客户端在这个时间之前不去检查(发请求),等同max-age的效果。但是如果同时存在,则被Cache-Control的max-age覆盖。

二.expires在nginx中配置的位置

在nginx中可以写在locationif

三.格式

expires 30s;   #缓存30秒
expires 30m; #缓存30分钟
expires 2h; #缓存2小时
expires 30d; #缓存30天

注:服务器的时间要准确,如果服务器的时间落后于实际时间,可能导致缓存失效。

四.nginx不设置expires则响应304

304其实也是一种缓存手段,其原理如下:

服务器响应文件内容时,同时响应etag标签(内容的签名,内容一变,他也变),和last_modified_since两个标签值,浏览器下次去请求时,头信息发送这2个标签,服务器检查文件有没有发生变化,如没有发生变化,直接将头信息返回:etag,last_modified_since,这个时候,浏览器知道内容没有改变,于是直接调用本地缓存。这个过程也请求了服务器,传输的信息极少,对于变化周期短的,如静态html、css、js比较适合用这个方式。