Javascript 网络工作者赢得';除非清除缓存,否则无法在IE中启动

Javascript 网络工作者赢得';除非清除缓存,否则无法在IE中启动,javascript,html,internet-explorer,sharepoint,web-worker,Javascript,Html,Internet Explorer,Sharepoint,Web Worker,我的HTML5脚本中有一个非常奇怪的bug。我完全在OData中编写了一个sharepoint应用程序,它使用一些HTML5WebWorker在后台处理数字。这在所有主流浏览器(FF、IE10+Chrome等)上都能完美运行。但是,当我再次执行刷新或浏览页面时。该脚本在FF和Chrome上仍然可以正常工作,但在IE上仍然可以使用 在我的网络视图中,我看到对Worker.js文件的请求,但响应为304 NOT MODIFIED。IE然后挂起该请求,状态为(待定)。只有在清除浏览器缓存时,此问题才能

我的HTML5脚本中有一个非常奇怪的bug。我完全在OData中编写了一个sharepoint应用程序,它使用一些HTML5WebWorker在后台处理数字。这在所有主流浏览器(FF、IE10+Chrome等)上都能完美运行。但是,当我再次执行刷新或浏览页面时。该脚本在FF和Chrome上仍然可以正常工作,但在IE上仍然可以使用

在我的网络视图中,我看到对Worker.js文件的请求,但响应为304 NOT MODIFIED。IE然后挂起该请求,状态为(待定)。只有在清除浏览器缓存时,此问题才能得到解决

我使用self.close()正确关闭了所有线程

你知道问题是什么吗?我不确定这是代码问题、浏览器问题还是服务器端问题,但我可以在Sharepoint online和本地服务器上复制该漏洞。整个项目都是JS的,所以我也不能修改标题作为解决方法


更新:我在sharepoint环境之外运行了完全相同的代码,它工作得非常好。问题与Sharepoint相关。

使用基于时间的querystring参数可防止缓存在每次刷新时显示http状态200。在最新的铬合金上测试,即ff

var opus = new Worker("worker.js?q=" + new Date().getTime().toString() );

老实说,这是一个长期的尝试,因为我现在没有sharepoint

sharepoint发送标题:

Content-Disposition: attachment; filename="xyz.js"
X-Download-Options:  noopen
而IE Web Worker则不运行此Web Worker。(在IE11中测试)在IE网络中监视仍处于挂起状态的请求,即使响应文本可见

我知道有两个解决办法:

  • 将web worker js放在layouts文件夹中(需要一个服务器场解决方案,其缺点是)
  • 将Web应用程序的浏览器文件处理设置为Permissive(可能您的安全性不受影响)

  • 我有一个类似的问题,但对我来说,web worker永远不会重新加载,即使我刷新缓存:。它可能是响应的http头。(特别是cache control、expires、etag和last modified)我建议您在developer tools的网络面板中查看http头并与我们共享。也许你会马上意识到这个问题。