IE缓存行为:响应304后跟相同资源上的200?

时间:2016-07-01 14:24:59

标签: http amazon-s3 browser-cache

我感到困惑的是,我从我们的S3存储桶请求一个max-age设置为1年的视频文件。我有时会得到304,但更常见的是其后有200个回复。我试图在IE11中做到这一点。

enter image description here

以下是304的请求和回复:

enter image description here

enter image description here

我还用查尔斯代理拍摄了这些请求的快照(在另一个时刻):

enter image description here

enter image description here

以下是200的请求和回复:

enter image description here

enter image description here

以下是查尔斯代理所见的请求和回复:

enter image description here

enter image description here

请求由首先添加的DOM元素(似乎是304)触发,然后在Javascript(这些似乎是200' s)中从头开始再次定期播放。 / p>

所以问题是:我在设置中可能错过了什么或者阻止这样的资源被缓存的任何东西?

感谢。

P.S。

  1. 要明确:"始终从服务器刷新"关闭
  2. 我还看到200个回复与Google的#200; 200(来自缓存)"不同,因为每次视频加载时总下载量都会不断增加。

1 个答案:

答案 0 :(得分:0)

我终于找到了导致这种奇怪的缓存行为的原因。例如,它只发生在Internet Explorer中(我仅测试了版本11)。在我解释之前,有一点背景......

我们的主要应用程序在主域上运行,我们称之为www.foo.com。 Ajax请求是在ajax.foo.com上的不同应用程序实例上完成的。我们的服务经销商在自己的域名下运行主域名,例如www.bar.com。他们仍然使用常规的Ajax域ajax.foo.com(不确定这是否相关,但我认为值得一提)。

我发现,当应用程序从主域www.foo.bar启动时,来自S3的所有视频都会被正确缓存。但是一旦我们从经销商域运行主应用程序,缓存就不会再发生了。请参阅下面的屏幕截图。

我仍然对S3资产缓存对主域名的依赖感到十分困惑。我们还没有发现任何根本原因。所以我们决定寻找适用于我们的解决方法:经销商只需打开一个包含iframe的网页即可启动应用程序,该iframe启动常规主域www.foo.com上的实际应用程序,缓存正常。这解决了我们的问题,虽然我没有找到并且解决了实际原因的不良品味。

转销商域上的缓存行为

注意所有带有响应200的额外请求和额外下载的卷。

enter image description here

主域缓存行为

请注意,随着时间的推移,没有任何额外的资源请求

enter image description here