浏览器缓存
2021-06-02 10:16:35
# 什么是浏览器缓存?
浏览器缓存是浏览器将请求到的网络资源存储在本地的一种行为。
# 浏览器使用缓存的机制
1. 浏览器发起请求
2. 浏览器查找是否有缓存(先找内存缓存,然后硬盘缓存)
3. 如果找不到缓存,则向服务器发起请求,将响应内容放入缓存并载入资源。
4. 如果找到缓存,判断缓存是否过期(根据上次请求返回的Last-Modify,过期则发送If-Modify-Since询问服务器是还能继续使用之前的缓存)或需要更新(向服务器发送If-None-Match,根据返回的Etag判断)
5. 如果缓存有效,浏览器获得一个304响应并将新内容(新资源或相关的参数)存入缓存
6. 载入资源
# 缓存存储在哪里?
1. 内存缓存,客户端进程结束后就会清除
2. 硬盘缓存,客户端结束后也不会清除
# 前端如何操作缓存?
1. 操作应用缓存(ApplicationCache),通过 `window.applicationCache` 对象
2. 操作缓存存储(CacheStorage),通过 `CacheStorage` 接口
# 前端如何强制不使用缓存?
1. 在静态资源 url 后手动添加版本号或时间戳
2. 在 html 中添加 head 信息:
>```
><!-- 用于 http 1.1,禁止浏览器使用缓存 -->
><meta http-equiv="Cache-Control" content="no-store" />
><!-- 用于 http 1.0,禁止浏览器使用缓存 -->
><meta http-equiv="Pragma" content="no-cache" />
><!-- 设定缓存经过 0 秒就过期 -->
><meta http-equiv="Expires" content="0" />
>```