文章目录
- 强缓存
- 一、Expires(http1.0 规范)
- 二、cache-control(http1.1 出现的 header 信息)
- Cache-Control 的常用选项
- Cache-Control 常用选项的选择
- 三、弊端
- 协商缓存
- 一、ETag
- 二、If-None-Match
- 三、Last-modified
- 四、If-Modified-Since
- 浏览器的三种刷新方式
- 静态资源部署策略-资源(一)
- 静态资源部署策略-html(二)
- 动态请求静态化处理
- 架构改进-全页面静态化
- 交易验证优化
- 数据库行锁性能优化-版本一🥩
- 数据库行锁性能优化-版本二🥩
- 异步同步数据库
- 存在的问题
- 回查机制-库存操作流水
- 库存数据库最终一致性保证
- 库存售罄
- 现有缺陷
- 秒杀令牌原理
- 队列泄洪原理
强缓存
一、Expires(http1.0 规范)
Expires 的值为一个绝对时间的 GMT 格式的时间字符串,例如 Mon,10 Jun 2015 21:31:24 GMT。若发送请求的时间在 expires 之前,则本地缓存有效;否则,将发送请求至服务器以获取资源。
二、cache-control(http1.1 出现的 header 信息)
通过 max-age 值进行判断,它是一个相对值。浏览器依据第一次的请求时间和 Cache-Control 设置的有效期,计算出资源过期时间。再将该过期时间与当前时间进行比较,若请求时间在过期时间之前,则能命中缓存,否则不行。Cache-Control 的设置由服务器完成,前端无需进行任何操作。
Cache-Control 的常用选项
选项 | 含义 |
---|---|
max-age=100 | 缓存 100 秒后过期,资源缓存在本地。 |
no-cache | 不使用本地缓存,使用协商缓存。先与服务器确认返回的响应是否被更改,若之前的响应中存在 ETag,则请求时会与服务端验证。若资源未被更改,则可避免重新下载。 |
no-store | 所有内容都不会被缓存,既不使用强制缓存也不使用协商缓存。每次用户请求该资源,都会向服务器发送一个请求,服务器再返回资源。 |
public | 可以被所有的用户缓存,包括客户端和代理服务器。 |
private | 只能被客户端缓存,不允许 CDN 等中继缓存服务器对其缓存。 |
s-maxage | 覆盖 max-age,作用域与 max-age 一样,但只用于代理服务器中缓存。 |
在浏览器下一次请求同样的文件时,浏览器会检查 max-age 是否过期。若未过期,则直接从本地缓存中获取资源,不会向服务器再次发起请求;若过期,浏览器会像第一次一样向服务器发起请求。一旦使用强缓存且未过期,就不会再向服务器发起请求。