浏览器缓存得学习
根据HTTP头部的相关字段(Cache-control,Pragma等)决定是否加入disk cache
我们可以在 Chrome 的开发者工具中,Network -> Size 一列看到一个请求最终的处理方式:如果是大小 (多少 K, 多少 M 等) 就表示是网络请求,否则会列出 from memory cache, from disk cache 和 from ServiceWorker。
memory cache 是浏览器为了加快读取缓存速度而进行的自身的优化行为,不受开发者控制,也不受 HTTP 协议头的约束,算是一个黑盒。Service Worker 是由开发者编写的额外的脚本,且缓存位置独立,出现也较晚,使用还不算太广泛。所以我们平时最为熟悉的其实是 disk cache,也叫 HTTP cache (因为不像 memory cache,它遵守 HTTP 协议头中的字段)。平时所说的强制缓存,对比缓存,以及 Cache-Control 等,也都归于此类。
强制缓存(强缓存)
客户端请求后,先访问缓存数据库看是否存在,如果存在就直接返回;不存在就请求真实服务器,然后再写入缓存数据库。
强制缓存直接减少请求数,是提升最大的缓存策略。如果考虑使用缓存来优化网页性能,强制缓存应该是首先被考虑的。
可以造成强制缓存的字段是 Cache-control 和 Expires
Expires