返回
缓存:让网络更快
前端
2024-01-24 05:09:46
缓存的本质
HTTP缓存就是将网络资源暂时存储在设备(比如客户端设备或者代理服务器设备)上,以减少延迟,提高后续访问速度。
HTTP强缓存机制
强缓存完全由HTTP头字段控制,主要涉及以下几个HTTP头字段:
- Cache-Control: no-cache。
Cache-Control: no-cache告诉客户端不要缓存响应内容,即禁止客户端使用缓存。
- Cache-Control: max-age=seconds。
Cache-Control: max-age=seconds告诉客户端缓存资源最长缓存时间,单位是秒。
- Expires: some date。
Expires: some date告诉客户端缓存资源在指定的时间之前有效。
以上头字段在HTTP协议中属于请求头字段,都可以通过请求头传递。
HTTP协商缓存机制
协商缓存也完全由HTTP头字段控制,协商缓存主要涉及以下几个HTTP头字段:
- Last-Modified: some date。
Last-Modified: some date表示资源的最后修改时间。
- Etag: some value。
Etag: some value表示资源的一个唯一标识,只要资源内容没有发生变化,该值就不会改变。
- If-Modified-Since: some date。
If-Modified-Since: some date表示客户端请求头中条件,其值为请求资源时该资源的最后修改时间。
- If-None-Match: some value。
If-None-Match: some value表示客户端请求头中的条件,其值为请求资源时该资源的Etag值。
强缓存和协商缓存的工作原理
强缓存和协商缓存的触发条件不同。强缓存只与请求头字段有关,而协商缓存还与服务器响应头字段有关。
使用场景
- 强缓存: 强缓存适合于那些不经常变化的资源,如图片、CSS文件、JS文件等。
- 协商缓存: 协商缓存适合于那些经常变化的资源,如新闻、博客文章等。
优缺点
- 强缓存的优点:强缓存可以完全绕过服务器,直接从客户端缓存中获取资源,速度非常快。
- 强缓存的缺点:强缓存可能会导致客户端获取到过期的资源,因为强缓存只与请求头字段有关,而与服务器响应头字段无关。
- 协商缓存的优点:协商缓存可以确保客户端获取到最新的资源,因为协商缓存不仅与请求头字段有关,还与服务器响应头字段有关。
- 协商缓存的缺点:协商缓存的速度没有强缓存快,因为协商缓存需要向服务器发送请求,以检查资源是否发生变化。