返回

缓存:让网络更快

前端

缓存的本质
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文件等。
  • 协商缓存: 协商缓存适合于那些经常变化的资源,如新闻、博客文章等。

优缺点

  • 强缓存的优点:强缓存可以完全绕过服务器,直接从客户端缓存中获取资源,速度非常快。
  • 强缓存的缺点:强缓存可能会导致客户端获取到过期的资源,因为强缓存只与请求头字段有关,而与服务器响应头字段无关。
  • 协商缓存的优点:协商缓存可以确保客户端获取到最新的资源,因为协商缓存不仅与请求头字段有关,还与服务器响应头字段有关。
  • 协商缓存的缺点:协商缓存的速度没有强缓存快,因为协商缓存需要向服务器发送请求,以检查资源是否发生变化。