在 Internet Explorer 中,我在“工具”->“Internet 选项”->(浏览历史记录)设置中设置了“每次访问网页”选项,这样可以确保每次我在 Flash 播放器中访问视频时都会从中获取视频服务器。
但是,如果我将设置设置为“自动”,则不会从服务器返回视频,而是使用缓存副本。我尝试在 Web.config 中使用 clientCache 设置(即 useMaxAge/UserExpires/DisableCache),但视频在第一次请求时返回,但在播放缓存版本后返回。
在 Fiddler 中,我可以看到对视频发出的第一个请求,之后只播放缓存的版本,因此没有发出 http 请求。
那么使用临时文件的“自动”设置,我怎样才能让视频每次都从服务器返回呢?
编辑
显然,正如 Eric 提到的,这是一个缓存问题,而不是 Flash 播放器或 IE 问题。
我检查了提琴手,我的标题为:
HTTP/1.1 200 OK 内容长度:76278442 内容类型:视频/mp4 最后修改时间:周三,2013 年 8 月 21 日 08:47:29 GMT ETag:“2117329216”服务器:Microsoft-IIS/7.5 X-Mod-H264-流式传输:版本 = 2.2.7 X-Powered-By:ASP.NET 日期:2013 年 8 月 22 日星期四 07:42:23 GMT
提琴手中的缓存选项卡告诉我:
默认情况下,HTTP/200 响应是可缓存的,除非存在 Expires、Pragma 或 Cache-Control 标头并禁止缓存。HTTP/1.1 ETAG 标头存在:“2117329216” HTTP Last-Modified 标头存在:2013 年 8 月 21 日星期三 08:47:29 GMT
未提供显式 HTTP 过期信息。大多数浏览器使用启发式过期策略:Last-Modified 和 Date 之间的 10% 的增量是“02:20:50.5000000”,所以这个响应将在 22/08/2013 11:52:54 启发式过期。
因此,我尝试了 web.config 中clientCache条目的所有组合,但我似乎无法添加 Cache-Control : no-Cache 标头,以便 IE 尊重它而不使用它自己的启发式算法。
不确定这是否与它有关,但我们在上传视频时在主虚拟文件夹“存档”下创建文件夹。
文件夹结构的格式为:Archives/Archive1/0000/01/MP4/High 例如,每次上传时数字都会增加。
所以在网络配置中我有:
<location path="Archives">
<system.webServer>
<staticContent>
<clientCache cacheControlMode="DisableCache" />
</staticContent>
</system.webServer>
</location>
但没有添加缓存控制标头。
我什至尝试引用一个特定的文件夹:
<location path="Archives/Archive1/0000/22/MP4/High">
<system.webServer>
<staticContent>
<clientCache cacheControlMode="DisableCache" />
</staticContent>
</system.webServer>
</location>
并且仍然没有添加标题(尽管在 IIS 中,当我检查目录 Archives/Archive1/0000/22/MP4/High 时,我可以在单击“High”文件夹上的“Set Common Headers”时看到标题集)。
有任何想法吗?
我在回复中注意到“服务器:Microsoft-IIS/7.5 X-Mod-H264-Streaming”,这与缓存问题有关吗?