转载自:Nginx缓存控制字段cache-control的配置 - OrcHome
参考:Nginx: using X-Accel-Expires with Cache-Control - Server Fault
Nginx:将X-Accel-Expires与Cache-Control一起使用 - 糯米PHP (nuomiphp.com)

HTTP协议的Cache -Control指定请求和响应遵循的缓存机制。在请求消息或响应消息中设置 Cache-Control并不会影响另一个消息处理过程中的缓存处理过程。

  1. 请求时的缓存指令包括: no-cache、no-store、max-age、 max-stale、min-fresh、only-if-cached等。
  2. 响应消息中的指令包括: public、private、no-cache、no- store、no-transform、must-revalidate、proxy-revalidate、max-age。

Cache-Control

设置相对过期时间, max-age指明以秒为单位的缓存时间. 若对静态资源只缓存一次, 可以设置max-age的值为315360000000 (一万年). 比如对于提交的订单,为了防止浏览器回退重新提交,可以使用Cache-Control之no-store绝对禁止缓存,即便浏览器回退依然请求的是服务器,进而判断订单的状态给出相应的提示信息!
Http协议的cache-control的常见取值及其组合释义:

  • no-cache: 数据内容不能被缓存, 每次请求都重新访问服务器, 若有max-age, 则缓存期间不访问服务器.
  • no-store: 不仅不能缓存, 连暂存也不可以(即: 临时文件夹中不能暂存该资源).
  • private(默认): 只能在浏览器中缓存, 只有在第一次请求的时候才访问服务器, 若有max-age, 则缓存期间不访问服务器.
  • public: 可以被任何缓存区缓存, 如: 浏览器、服务器、代理服务器等.
  • max-age: 相对过期时间, 即以秒为单位的缓存时间.
  • no-cache, private: 打开新窗口时候重新访问服务器, 若设置max-age, 则缓存期间不访问服务器.
  • private, 正数的max-age: 后退时候不会访问服务器.
  • no-cache, 正数的max-age: 后退时会访问服务器.