【发布时间】:2011-07-02 06:04:22
【问题描述】:
我正在使用具有如下功能的缓存库。它试图从第 5 行的请求中获取 eTag,但从未设置 eTag。
REQUEST 什么时候会有电子标签?以及如何设置它们?
谢谢。
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;
}
【问题讨论】:
-
ETag if 只有一个响应头字段:“ETag 响应头字段为请求的变体提供实体标签的当前值。”
-
相关:stackoverflow.com/questions/5081397/… 实际上,
ETag仅出现在响应标头中。请求中的反标头是If-None-Match,正如您在其他问题中所回答的那样。
标签: php http outputcache cache-control