我正在查看试图使用请求对象的 If-Modified-Since
header 的缓存库。问题是这个 header 永远不会被设置,它总是空白的,这对我来说是有意义的,因为它是一个请求。
如何强制请求具有 If-Modified-Since
header ?或者我对它的作用有什么看法。
这是我指的函数。
public function isNotModified(Request $request)
{
$lastModified = $request->headers->get('If-Modified-Since');
$notModified = false;
if ($etags = $request->getEtags()) {
$notModified = (in_array($this->getEtag(), $etags) || in_array('*', $etags)) && (!$lastModified || $this->headers->get('Last-Modified') == $lastModified);
} elseif ($lastModified) {
$notModified = $lastModified == $this->headers->get('Last-Modified');
}
if ($notModified) {
$this->setNotModified();
}
return $notModified;
}
最佳答案
带有 If-Modified-Since
的请求仅当客户端已经拥有与具有 Last-Modified
的响应一起获得的资源时才有意义 header 与允许浏览器缓存的 header 结合使用 Cache-Control
和/或 Pragma
包含 public
的值。
此外,我注意到当原始响应还包含 ETag
时,某些浏览器不包含 If-Modified-Since
header 。浏览器将改为使用 If-None-Match
对其进行测试。
另见:
关于php - 了解 If-Modified-Since HTTP header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5081397/