缓存和HTTP/2

7

我在一个使用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,是否还应该采取其他缓存方案来提高性能?
1个回答

9

以下是您的问题的答案:

  1. 不,这不是一个问题。如果同时指定了Cache-Control和Expiries,Cache-Control将优先使用。但通常情况下,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标头进行缓存的基本原理保持不变。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接