Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Http 为什么不是';浏览器是否与缓存控制头相关?_Http_Caching_Browser Cache_Cache Control - Fatal编程技术网

Http 为什么不是';浏览器是否与缓存控制头相关?

Http 为什么不是';浏览器是否与缓存控制头相关?,http,caching,browser-cache,cache-control,Http,Caching,Browser Cache,Cache Control,我在S3上有一个图像,它的缓存控制头设置为public,max age=3600。因此,下游系统(代理、浏览器等)应将其缓存1小时 我可以看到浏览器在后续请求后返回304(未修改) 然后,我在S3上更新了该图像(资源没有版本控制..URL没有更改,只是_内容),但浏览器运行并获得了新版本。(例如HTTP 200) 以下是chrome网络流量: 要求: 200(好的) 304(未修改) ~z~幕后形象发生了变化~ 200(好的) 304(未修改) 以下是响应标题: 这怎么可能?我没有设置正确的

我在S3上有一个图像,它的
缓存控制
头设置为
public,max age=3600
。因此,下游系统(代理、浏览器等)应将其缓存1小时

我可以看到浏览器在后续请求后返回304(未修改)

然后,我在S3上更新了该图像(资源没有版本控制..URL没有更改,只是_内容),但浏览器运行并获得了新版本。(例如HTTP 200)

以下是chrome网络流量:

要求:

  • 200(好的)
  • 304(未修改)
  • ~z~幕后形象发生了变化~

  • 200(好的)
  • 304(未修改)
  • 以下是响应标题:

    这怎么可能?我没有设置正确的标题吗

    有两件事让我困惑:

  • 响应仍应为304(未修改)?浏览器是如何知道去获取图像的<代码>最大年龄尚未达到
  • chrome不应该显示“从磁盘缓存”之类的吗?(而不是真正转到服务器?)
  • 我的猜测是-我没有设置正确的缓存控制头或其他东西。因此,请有人解释一下这种行为,让我知道我需要做什么才能将资源缓存1小时:)


    谢谢

    响应中指定了
    ETag

    规范中对
    ETag
    进行了解释

    实体标记可以比修改更可靠地进行验证 不方便存储修改的情况下的日期
    日期,其中HTTP日期值的1秒分辨率不是
    足够,或修改日期不一致
    维持

    所以浏览器更喜欢它,而不是基于日期的过期

    因此,您的浏览器每次都会发出请求,除非内容已更改,否则返回http 304。否则,它是http 200

    如果您只需要基于时间的过期-删除
    ETag

    参考资料:


    啊。。我怀疑是etag。那么这是优先考虑的?例如,如果改变了,它会去获取图像,尽管存在最大年龄?基本上,如果你有一个ETag,甚至设置最大年龄都没有意义?@RPM1984它每次都会发出请求,而不管
    max age
    “如果你有一个ETag,甚至设置最大年龄都没有意义”——是的,我会说,但是为什么我的浏览器仍然会转到服务器,即使是304?它不应该说(从磁盘缓存)?(例如我问题中的第2点)。什么情况下它不会进入服务器?@RPM1984每次出现
    ETag
    都会让它进入服务器。“它不应该说(从磁盘缓存)?”---它不应该说,因为响应是从带有HTTP 304的服务器提供的,只有内容来自磁盘缓存。http 304暗示内容来自缓存。尽管@zerkms给出了一个很好的答案,但这个很好的答案为故事添加了一些额外的内容: