当前位置:  开发笔记 > 编程语言 > 正文

了解If-Modified-Since HTTP Header

如何解决《了解If-Modified-SinceHTTPHeader》经验,为你挑选了2个好方法。

我正在寻找一个试图使用If-Modified-Since请求对象的标头的缓存库.问题是这个标题永远不会被设置,它总是空白的,这对我来说是有意义的,看它是如何请求的.

你怎么能强制要求有一个If-Modified-Since标题?或者我是否会这样做.

这是我指的功能.

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;
}

BalusC.. 24

If-Modified-Since只有当客户端已经拥有一个资源以及一个响应时,该请求才有意义,该响应具有Last-Modified与允许浏览器缓存(如a Cache-Control和/或Pragma包含值)的标头相结合的标头public.

此外,我注意到一些浏览器不包括If-Modified-Since原始响应还包含ETag标头.而浏览器将If-None-Match用于测试它.

也可以看看:

Web作者和Web主人的缓存教程

@symc:与一些旧代理结合使用时仍然非常有效.除了我之外,如何提及可能会对OP的具体问题产生负面影响:)有一个糟糕的一天? (10认同)


alienhard.. 11

首先,您必须确保首先缓存初始响应(我在另一个相关问题中回答了这个问题.

尝试设置以下字段:

Last-Modified: Wed, 16 Feb 2011 13:52:26 GMT
Expires: -1
Cache-Control: must-revalidate, private

Last-Modified需要作为验证器(ETag如果你想测试,不要发送If-Modified-Since)

Expires -1 告诉资源是陈旧的,必须始终重新验证

Cache-Control 不得包含no-cache或no-store

当您在初始HTTP/200响应上发送这些标头时,在后续请求中,浏览器应发送包含If-Modified-Since标头的条件请求.



1> BalusC..:

If-Modified-Since只有当客户端已经拥有一个资源以及一个响应时,该请求才有意义,该响应具有Last-Modified与允许浏览器缓存(如a Cache-Control和/或Pragma包含值)的标头相结合的标头public.

此外,我注意到一些浏览器不包括If-Modified-Since原始响应还包含ETag标头.而浏览器将If-None-Match用于测试它.

也可以看看:

Web作者和Web主人的缓存教程


@symc:与一些旧代理结合使用时仍然非常有效.除了我之外,如何提及可能会对OP的具体问题产生负面影响:)有一个糟糕的一天?

2> alienhard..:

首先,您必须确保首先缓存初始响应(我在另一个相关问题中回答了这个问题.

尝试设置以下字段:

Last-Modified: Wed, 16 Feb 2011 13:52:26 GMT
Expires: -1
Cache-Control: must-revalidate, private

Last-Modified需要作为验证器(ETag如果你想测试,不要发送If-Modified-Since)

Expires -1 告诉资源是陈旧的,必须始终重新验证

Cache-Control 不得包含no-cache或no-store

当您在初始HTTP/200响应上发送这些标头时,在后续请求中,浏览器应发送包含If-Modified-Since标头的条件请求.

推荐阅读
家具销售_903
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有