http Cache-Control详解及nginx设置Cache-Control

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

Cache-Control是个http1.1响应头用来控制资源缓存它可取的值

  • no-store;不允许缓存资源
  • no-cache;使用缓存前先去源服务器校验资源有效性如果未变更则响应304不发送资源内容使用cache中的资源等于多了一次round-trip能减少网络传输如果已经过期则响应200并发送资源内容会携带if-modified-sinceif-matchno-cache和max-age:0,must-revalidate表达相同的意思;
  • public: 表明响应可以被任何对象包括发送请求的客户端代理服务器等等缓存
  • private: 表明响应只能被单个用户缓存不能作为共享缓存即代理服务器不能缓存它。私有缓存可以缓存响应内容比如对应用户的本地浏览器。;
  • max-age: 设置缓存存储的最大周期超过这个时间缓存被认为过期 (单位秒)。与Expires相反时间是相对于请求的时间。
  • Expires优先级比max-age优先级低意味着某个date/time后失效比如Expires: Wed, 21 Oct 2015 07:28:00 GMT
  • immutable表示响应正文不会随时间而改变。资源如果未过期在服务器上不发生改变因此客户端不应发送重新验证请求头例如If-None-Match或 If-Modified-Since来检查更新即使用户显式地刷新页面

对于html页面设置的建议

  • 使用缓存前去源服务器校验有效性nginx设置方法
location / {
    add_header Cache-Control no-cache;
}
  • 如果不想html被缓存nginx设置方法
location / {
    add_header Cache-Control no-store,max-age:0; 
}

no-store只能阻止新的资源不会被缓存不能阻止已经缓存的资源仍被使用添加max-age:0可以清除旧缓存这个设置意味着每次请求都会去源服务器获取资源状态码就是200

对不变的js、css等静态资源建议设置

location / {
    add_header Cache-Control public, max-age:最大值, immutable,max-age;
    //max-age可以设置超大的值以达到永不过期的目的;
}

顺便说一下pragma属于http1.0规范一般来说现在的通信端都用http1.1所以不缓存时没必要设置此header了。

Pragma: no-cache

参考

Cache-Control
Expires

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6
标签: nginx

“http Cache-Control详解及nginx设置Cache-Control” 的相关文章