基于几种不同的环境的解释,这里以浏览器为基准,cdn在此基础上进行了一些扩展
1。点击页面,回车,js跳转
在未过期的情况下,读取本地缓存,参考 response 返回的 1)cache-control : max-age , 2)expire 首部 .前者 复写 后者,后者主要是 为了兼容 不支持 HTTP1.1的 1%的用户
如果 response 返回的 新鲜度(其实基于上一条的条件和一些header以及客户端设置进行计算)过期了,会根据 Last-modified or Etag 分别进行 If-modified-since 或 If-none-match 的查询,未修改返回304,修改则200并且content携带整个文档
如果未设置 expire 和 cache-control,也有默认算法,大概1小时或一天,一般不超过1天。

2。刷新按钮。
强制执行 检查更新,类似于上一条的新鲜度过期, 未更新则304 ,否则200
3。强制刷新
request 携带头 cache-control:no-cache
文档返回200
cache-control:max-age = 0 与 cache-control:no-cache 区别参考下文
http://stackoverflow.com/questions/1046966/whats-the-difference-between-cache-control-max-age-0-and-no-cache
总结来说, no-cache == max-age=0 & mast-revalidate
no-cache 是强制进行校验检查是否最新, max-age 0 有可能在不同浏览器前进后退键的影响下直接用缓存,而且现在一些浏览器行为让no-cache 接近 no-store,就是强制删除缓存内容

« 中木马鸟 Maven快速打包编译 »