【问题标题】:Caching and HTTP/2缓存和 HTTP/2
【发布时间】:2017-12-16 20:21:55
【问题描述】:

我在一个运行 HTTP/2 的站点上,我实现了以下缓存设置:

cache-control:max-age=604800, private
etag:W/"115-54e8a25e7b187"
expires:Fri, 14 Jul 2017 11:39:45 GMT
last-modified:Tue, 02 May 2017 13:02:11 GMT

关于此设置的一些问题:

  • cache-controlexpires是不同的时间间隔不是问题吗?
  • etaglast-modified 不是多余的吗?
  • 如果使用 HTTP/2,在缓存性能方面还应该做些什么?

【问题讨论】:

    标签: performance caching cache-control http2 expires-header


    【解决方案1】:

    回答您的问题:

    1. 不,这不是问题。如果两者都指定,则优先使用缓存控制而不是 Expiries。大多数情况下,尽管 Web 服务器将它们设置为具有相同的值。

    2. ETag 和 Last-Modified 都用于条件响应,并优先使用 ETag(类似于 Cache-Control 和 Expiries)。 Last-Modified 的好处是它更易于阅读,尽管 ETags 允许在除日期之外的其他内容上定义它的额外灵活性。尽管 Etags 的一些实现存在问题(我不建议将它们用于 Apache 服务器,例如我在这里描述的:https://www.tunetheweb.com/performance/http-performance-headers/etag/)。

    3. HTTP/2 在缓存方面没有任何改变,因此使用与 HTTP/1 下相同的标头和控件。它还有许多其他性能优势。然而,服务器推送带来了一些有趣的问题,即如何只推送不在缓存中的资源(使用缓存摘要或某种基于 cookie 的系统来告诉服务器客户端已经缓存了什么)。但是使用上面提到的 HTTP 标头进行缓存的基础知识保持不变。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-05-24
      • 1970-01-01
      • 2017-09-09
      • 2017-10-25
      • 1970-01-01
      • 2012-06-06
      • 1970-01-01
      相关资源
      最近更新 更多