我正在使用Apache运行PHP,并对如何实现服务器端缓存以加快网站加载速度感到困惑。
Expires
、Last-Modified
和ETag
头部之间有什么区别,应该在什么情况下使用哪一个?
我正在使用Apache运行PHP,并对如何实现服务器端缓存以加快网站加载速度感到困惑。
Expires
、Last-Modified
和ETag
头部之间有什么区别,应该在什么情况下使用哪一个?
Expires
和 Cache-Control
是“强缓存头”。
Last-Modified
和 ETag
是“弱缓存头”。
首先,浏览器检查 Expires/Cache-Control
以确定是否向服务器发出请求。
如果必须发出请求,则会在HTTP请求中发送 Last-Modified/ETag
。如果文档的 Etag
值匹配,则服务器将发送一个304代码而不是200代码,并且没有内容。浏览器将从其缓存中加载内容。
我建议使用一种强缓存头和一种弱缓存头。
另请参阅:
Expires
标头与其他两个标头结合使用,但不管其他两个标头是否存在,它都是代理和浏览器缓存普遍支持的。
ETag
和 Last-Modified
时间戳之间的区别更多地是语义上的。 ETags 对客户端来说是不透明的,通常是校验和。 而 Last-Modified 标头可以被客户端解释。 它理解最后修改的时间戳线性工作。If-Unmodified-Since
的资源,则过去的广泛时间戳可能会匹配此条件。 如果您的页面经常更改,则 Last-Modified 时间戳可能是有利的。If-None-Match
令牌。 这可能意味着更多的未命中。 另外,您必须比较多个校验和,而使用 Last-Modified 时间戳,您可以进行算术比较。