-
Notifications
You must be signed in to change notification settings - Fork 1
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
浏览器缓存策略 #8
Comments
mdn 相关文档 |
处理优先级 在本地 如果本地缓存过期,则要依靠协商缓存
强缓存的 http 状态码是 200 OK |
Cache-Control
禁止缓存
缓存静态资源
|
ETag
有两个作用 缓存未更改的资源 如果用户再次访问给定的URL(设有ETag字段),显示资源过期了且不可用,客户端就发送值为 服务器将客户端的 避免“空中碰撞” 当编辑 MDN 时,当前的 Wiki 内容被散列,并在响应中放入
将更改保存到 Wiki 页面(发布数据)时,POST 请求将包含有
如果哈希值不匹配,则意味着文档已经被编辑,抛出 412 ( Precondition Failed) 前提条件失败错误。 |
Pragmahttp1.0 字段, 通常设置为 浏览器勾选 Disable Cache 时,将会发送
Pragma: no-cache
Expires: xxx xxx 是一个没有过期的时间 |
Age
如
|
Date
指的是响应生成的时间. 请求经过代理服务器时, 返回的 Date 未必是最新的, 通常这个时候, 代理服务器将增加一个 Age 字段告知该资源已缓存了多久. Date: Wed, 21 Oct 2015 07:28:00 GMT |
Vary
对于服务器而言, 资源文件可能不止一个版本, 比如说压缩和未压缩, 针对不同的客户端, 通常需要返回不同的资源版本. 比如说老式的浏览器可能不支持解压缩, 这个时候, 就需要返回一个未压缩的版本; 对于新的浏览器, 支持压缩, 返回一个压缩的版本, 有利于节省带宽, 提升体验. 那么怎么区分这个版本呢, 这个时候就需要Vary了. 服务器通过指定
如上设置, 代理服务器将针对是否压缩和浏览器类型两个维度去缓存资源. 如此一来, 同一个url, 就能针对 PC 和 Mobile 返回不同的缓存内容. |
怎么让浏览器不缓存静态资源可以设置
也可以给资源增加版本号,这样可以很方便地控制什么时候加载最新资源 <link rel="stylesheet" type="text/css" href="../css/style.css?version=1.8.9"/> |
关于 memory cache 和 disk cache |
关于 Cache-control 的 public 和 private 的区别 |
总结成文章
欢迎关注我的微信公众号,定期更新精品文章~
The text was updated successfully, but these errors were encountered: