nginx缓存设置(expires)
一.expires功能说明
nginx缓存的设置可以提高网站性能,对于网站的图片,尤其是新闻网站,图片一旦发布,改动的可能是非常小的,为了减小对服务器请求的压力,提高用户浏览速度,我们可以通过设置nginx中的expires,让用户访问一次后,将图片缓存在用户的浏览器中,且时间比较长的缓存。
原理:当nginx设置了expires后,例如设置为:expires 10d; 那么,所在的location或if的内容,用户在10天内请求的时候,都只会访问浏览器中的缓存,而不会去请求nginx。
注:需要注意的是,这种缓存方式只能在用户不对浏览器强制刷新的情况下生效,如果用户通过url来进行访问,是可以访问到缓存的。
举例查看网站图片的缓存时间:
注:
Cache-control 用于控制HTTP缓存(在HTTP/1.0中可能部分没实现,仅仅实现了 Pragma: no-cache) Expires 表示存在时间,允许客户端在这个时间之前不去检查(发请求),等同max-age的效果。但是如果同时存在,则被Cache-Control的max-age覆盖。
二.expires在nginx中配置的位置
在nginx中可以写在location或if段
三.格式
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比较适合用这个方式。