您当前的位置: 首页 > 学无止境 > 心得笔记 网站首页心得笔记
nginx-expires缓存提升网站负载
发布时间:2017-11-23 12:15:23编辑:雪饮阅读()
expires
默认缓存在浏览器多次请求同一资源时会出现304状态码,并且控制台能看到资源大小为0,即便某些浏览器中不为0,那么也会显示该资源来自于缓存。
304 也是一种很好的缓存手段
原理是: 服务器响应文件内容是,同时响应etag标签(内容的签名,内容一变,他也变), 和 last_modified_since 2个标签值
浏览器下次去请求时,头信息发送这两个标签, 服务器检测文件有没有发生变化,如无,直接头信息返回 etag,last_modified_since
浏览器知道内容无改变,于是直接调用本地缓存.
这个过程,也请求了服务器,但是传输的内容极少.
对于变化周期较短的,如静态html,js,css,比较适于用这个方式。
但304缓存始终还是要请求服务器的,即便传输的内容极少,要想完全不请求服务器则要使用expires。
nginx配置expires缓存:
nginx格式
expires 30s;
expires 30m;
expires 2h;
expires 30d;
示例:
在本站内遇到所有.jpg,.jpeg,.gif,.png都缓存一天,并且在这一天里禁止向服务请求。只从缓存中获取。
location ~* \.(jpg|jpeg|gif|png) {
expires 1d;
}
expires过期时间以服务器端为准,该时间为服务器端在请求的第一次时生成,可观察浏览器第一次访问页面后的每个请求响应头信息来观察验证。
当服务器端时间和本地时间一致的情况下,并且配置了expires则在缓存期间多次请求即便304都不会出现,直接对服务器不发起任何请求。这是在火狐浏览器中的呈现,如果是其它浏览器则可能有请求,但请求是请求到缓存中的。
expires设置成功后,访问的响应头中Expires的时间是过期时间,而Cache-Control的max-age的值则是缓存的有效期。
注意:服务器的日期要准确,如果服务器的日期落后于实际日期,可能导致缓存失效
关键字词:nginx,expires,缓存