php - 了解 If-Modified-Since HTTP header

标签 php http cache-control outputcache if-modified-since

我正在查看试图使用请求对象的 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/

相关文章:

PHP 缓存 header 覆盖

javascript - 为什么在请求中使用 Cache-Control header ?

php - PDO更新返回成功,但不更新数据库

php - 计算项目并获得百分比

java - 为什么在改造中需要 addConverterFactory

http - 如何使用 libcurl 通过多个 NIC 路由客户端 HTTP 请求

php - .htaccess:缓存控制,我如何处理网站更新?

php - Javascript 似乎正在改变表单字段样式

php - 需要一个 C 结构解析器

python - 何时在 http 请求中使用 'raw' 属性