参考文章:浏览器 HTTP 协议缓存机制详解
缓存过程max-age 和 expires
服务器用 http/1.0+ 的 expires 首部或者 http/1.1 cache-control: max-age 首部来指定过期日期,两者作用一样,但有一些偏差。
来自 HTTP 权威指南max-age 是相对于文档生成的时间,而 expires 受到服务端和客户端之间的时间偏差的影响。
Etag 和 last-modify
即使缓存过期,如果文件在缓存期间没有更新过,则可以继续使用缓存。使用 if-None-Match 和 Etag 或者 if-Modified-since 和 last-modify 都可以判断文件是否有更新。
来自 HTTP 权威指南为什么使用 Etag:
- 文件被重写,但内容不变
- 有些文件修改并不重要,例如注释
- last-modify 使用的单位是秒,一些场景上不适用
网友评论