1

我有一些<video>使用 javascript 动态创建和加载的 s,document.createElement然后我使用屏幕外画布对它们进行采样并弄乱它们。

在每个浏览器中都非常有趣并且运行良好....等待它...除了 IE9(惊喜)。

问题是:当我清除缓存并重新加载 IE 时,一切都很好,但是当视频被缓存时,IE 开始抱怨:

DOM Exception: SECURITY_ERR (18) 

我现在已经阅读了互联网上有关此的所有内容,基本上是 IE 很愚蠢,因为这个错误实际上是关于 CORS 的,这不可能是 CORS 问题

所以问题:

有没有办法可以使用 .htaccess 来强制 IE9(并且只有 IE9)来防止 IE9 缓存视频,或者我是否必须对视频文件名进行小马查询?

真的非常感谢!

编辑:答案

除了下面 FlavorScape 的回答之外,在对他的链接上的参考文献进行了一些试验之后,这段代码似乎可以工作:

BrowserMatchNoCase "MSIE" isIE

<IfDefine isIE>
    ExpiresByType video/ogg                 "access plus 0 seconds"
    ExpiresByType audio/ogg                 "access plus 0 seconds"
    ExpiresByType video/mp4                 "access plus 0 seconds"
    ExpiresByType video/webm                "access plus 0 seconds"
</IfDefine>
4

1 回答 1

1

当我访问我不想缓存的东西时,我通常会在文件名中添加一个查询字符串。

例如:

someVideo.mp4?poop=Math.Round( Math.random()*10000)

您可以在服务器标头上设置 no-cache。见参考

这是如何在 .htaccess http://www.askapache.com/htaccess/apache-speed-cache-control.html

Cache-Control   = "Cache-Control" ":" 1#cache-directive
    cache-directive = cache-request-directive
         | cache-response-directive
    cache-request-directive =
           "no-cache"                          ; Section 14.9.1
         | "no-store"                          ; Section 14.9.2
         | "max-age" "=" delta-seconds         ; Section 14.9.3, 14.9.4
         | "max-stale" [ "=" delta-seconds ]   ; Section 14.9.3
         | "min-fresh" "=" delta-seconds       ; Section 14.9.3
         | "no-transform"                      ; Section 14.9.5
         | "only-if-cached"                    ; Section 14.9.4
         | cache-extension                     ; Section 14.9.6
     cache-response-directive =
           "public"                               ; Section 14.9.1
         | "private" [ "=" <"> 1#field-name <"> ] ; Section 14.9.1
         | "no-cache" [ "=" <"> 1#field-name <"> ]; Section 14.9.1
         | "no-store"                             ; Section 14.9.2
         | "no-transform"                         ; Section 14.9.5
         | "must-revalidate"                      ; Section 14.9.4
         | "proxy-revalidate"                     ; Section 14.9.4
         | "max-age" "=" delta-seconds            ; Section 14.9.3
         | "s-maxage" "=" delta-seconds           ; Section 14.9.3
         | cache-extension                        ; Section 14.9.6
    cache-extension = token [ "=" ( token | quoted-string ) ]

或者您可以尝试设置无缓存文档标题,但我认为这只适用于文档本身。

于 2012-08-28T00:19:02.910 回答