简单介绍一下强缓存和协商缓存

81 阅读2分钟

强缓存(Strong Caching)和协商缓存(Conditional Caching)是用于在Web浏览器和服务器之间管理HTTP缓存的两种不同策略。

  1. 强缓存(Strong Caching):

    • 强缓存是一种缓存策略,浏览器在向服务器请求资源之前首先检查缓存的有效性。
    • 当资源被请求时,服务器会返回带有缓存规则的响应头,通常是Cache-ControlExpires
    • 如果缓存规则指示资源仍然有效(未过期),浏览器将从本地缓存中加载资源,而不是向服务器发送请求。这减少了服务器的负载和网络延迟。
    • 常见的缓存规则包括:
      • Cache-Control:通过max-age指定缓存的最大有效时间,以秒为单位。
      • Expires:指定资源的过期日期时间,通常是一个HTTP日期。
    • 强缓存可以通过HTTP响应头中的Cache-ControlExpires字段来配置。
  2. 协商缓存(Conditional Caching):

    • 当资源的缓存过期或浏览器不执行强缓存时,它会向服务器发送一个条件请求,以检查资源是否仍然有效。
    • 这个条件请求包括一些标头,如If-Modified-SinceIf-None-Match
    • 服务器会根据这些标头的值来判断资源是否已经发生了变化。
    • 如果资源没有变化,服务器将返回一个304 Not Modified响应,告诉浏览器可以继续使用缓存中的资源,从而减少了带宽和响应时间。
    • 如果资源已经发生变化,服务器将返回新的资源,浏览器会使用新的资源更新缓存。
    • 常见的协商缓存标头包括:
      • If-Modified-Since:表示资源的上次修改时间。
      • If-None-Match:表示资源的唯一标识符(通常是ETag)。

强缓存和协商缓存在HTTP缓存策略中起着不同的角色,它们可以根据资源的特性和应用程序的需求来选择合适的缓存策略。强缓存适用于资源变化不频繁的情况,可以在一段时间内快速提供资源,而协商缓存适用于资源可能频繁变化,但仍然希望充分利用缓存的情况。这些缓存策略可以通过HTTP响应头来配置,例如Cache-ControlExpiresETagLast-Modified等。