我正在运行一个适用于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
调用显示,还有上面提到的堆栈跟踪)。但它只是运行一个完全过时的版本,即使我将整个缓存刷新了几十次。
这是一个超级错误,还是我是愚蠢的?
答案 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)
对我来说,解决方案是在网络选项卡上启用“始终从服务器刷新”。启用并刷新页面后,每次编辑时都会更新工作人员。