Web worker文件被缓存,并且从未在IE 11中重新加载

时间:2014-04-13 19:09:59

标签: javascript html5 internet-explorer caching web-worker

我正在运行一个适用于Chrome和Firefox的简单HTML5应用。它使用Web worker,如:

var worker = new Worker("the/worker/URL/Code.js");

我已经在IE中进行了一个多小时的实验,我终于发现Web工作者的代码永远不会重新加载。当我得到它的版本时,抛出错误,调试器会向我显示一个完全过时的工作代码文件版本,即使所有其他文件都已正确重新加载。

我使用随处可见的标准建议刷新缓存:安全 - >删除浏览历史记录 - >选择项目 - >好的 - >等等 - > Ctrl + F5重新加载 - > BAM,你的调试器仍然显示100%与几个小时前相同的文件(请记住,重新加载在Chrome和FF中按预期工作)。

当我查看网络分析器时,我看到:

URL Protocol    Method  Result  Type    Received    Taken   Initiator   Wait‎‎  Start‎‎ Request‎‎   Response‎‎  Cache read‎‎    Gap‎‎
/js/core/WorkerScriptCode.js    (Pending...)    GET (Pending...)    (Pending...)    0 B (Pending...)    webworker   1311    0   0   0   0   31

我不知道它为什么说"等待&#34 ;;我可以看到工作人员已经运行:我可以看到工作人员的工作正在完成(例如importScripts调用显示,还有上面提到的堆栈跟踪)。但它只是运行一个完全过时的版本,即使我将整个缓存刷新了几十次。

这是一个超级错误,还是我是愚蠢的?

2 个答案:

答案 0 :(得分:0)

Chrome中存在同样的问题。为了解决它,你可以使用缓存破坏程序:

主要代码:

var buster = randomNumberOrBuildNumber;
var worker = new Worker( "the/worker/URL/Code.js?buster=" + buster );

工人:

importScripts( 'script/to/import.js' + self.location.search );

这会将?buster=12345(或您randomNumberOrBuildNumber设置的任何内容)应用于工作人员的加载和工作人员进行的任何importScripts()次调用。

答案 1 :(得分:0)

对我来说,解决方案是在网络选项卡上启用“始终从服务器刷新”。启用并刷新页面后,每次编辑时都会更新工作人员。

Always refresh from server enabling in IE network