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

IE caching behaviour: response 304 followed by 200's on same resource?

令我感到困惑的是,我正在从我们的 S3 存储桶中请求一个最大年龄设置为 1 年的视频文件。我有时会收到 304,但更常见的是,在这些响应之后会出现多个 200 响应。我正在尝试在 IE11 中解决这个问题。

以下是 304 的请求和响应:

我还使用 Charles 代理对这些请求(另一时刻)进行了快照:

下面是 200 的请求和响应:

这是从 Charles 代理看到的请求和响应:

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

所以问题是:我可能在设置中遗漏了什么或任何阻止此类资源被缓存的东西?

谢谢。

P.S.

  1. 明确一点:"Always refresh from server" 已关闭
  2. 我还看到 200 个响应不像 Google 的“200(来自缓存)”,因为总下载量随着每次视频加载而不断增加。

我终于找到了导致这种奇怪的缓存行为的原因。一方面,它只发生在 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 的额外请求和额外的下载量。

主域上的缓存行为

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