⭐ cookie、session、localStorage、sessionStorage
- 存储位置
- 本地
- cookie
- 默认浏览器关闭就过期,保存在内存
- 设置过期时间后保存在硬盘
- localStorage、sessionStorage
- 服务端(内存、文件、redis 都有可能)
- 存储类型
- 字符串
- cookie、localStorage、sessionStorage
- 任何类型
- 存储大小
- cookie
- localStorage、sessionStorage
- session
- 过期时间
- cookie
- 设置的cookie过期时间之前一直有效,即使窗口或浏览器关闭
- 设置过期时间,则以过期时间为准
- localStorage
- sessionStorage
- 浏览器标签或窗口关闭(跳转到其他地方再回来仍然在,刷新也在。总之当前标签不能丢)
如何遍历出 localStorage 中所有数据
Object.keys(localStorage).forEach(key => {
console.log(localStorage.getItem(key));
});
第一次访问页面中时弹出引导,用户关闭引导,之后再次进入页面时不希望出现引导,如何实现?
⭐ 浏览器缓存策略
⭐ expires 和 cache-control 区别
都是用的系统时间,但
- expires 是个绝对时间,修改系统时间会有影响
- cache-control 是相对时间,即使客户端时间发生改变,相对时间也不会随之改变,这样可以保持服务器和客户端的时间一致性。
- Cache-control 的优先级高于 Expires
⭐ 讲一下强缓存与协商缓存
缓存分为两种: 强缓存和协商缓存,根据响应的 header 内容来决定。
缓存类型 |
获取资源形式 |
状态码 |
发送请求到服务器 |
强缓存 |
从缓存取 |
200(from cache) |
否,直接从缓存取 |
协商缓存 |
从缓存取 |
304(not modified) |
是,通过服务器来告知缓存是否可用 |
强缓存相关字段有 expires,cache-control。如果 cache-control 与 expires 同时存 在的话,cache-control 的优先级高于 expires。协商缓存相关字段有 Last-Modified/If-Modified-Since,Etag/If-None-Match