我正在运行一个可以在 Chrome 和 Firefox 中运行的简单 HTML5 应用程序。它使用网络工作者,如下所示:
var worker = new Worker("the/worker/URL/Code.js");
我在IE中实验了一个多小时,终于发现webworker的代码永远不会重新加载。当我获得它所具有的版本时,为了引发错误,调试器会向我显示工作代码文件的完全过时的版本,尽管所有其他文件都已正确重新加载。
我刷新了缓存,使用随处可见的标准建议:安全 -> 删除浏览历史记录 -> 选择项目 -> 确定 -> 等待 -> 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
我不知道为什么它显示“待处理”;我可以看到工作人员已经在运行:我可以看到工作人员正在完成的工作(例如importScripts
显示调用,并且还有上面提到的堆栈跟踪)。但它只是运行一个完全过时的版本,即使我刷新了整个缓存数十次。
这是一个超级错误,还是我很愚蠢?
Chrome 中也存在同样的问题。为了解决这个问题,你可以使用缓存破坏器:
主要代码:
var buster = randomNumberOrBuildNumber;
var worker = new Worker( "the/worker/URL/Code.js?buster=" + buster );
Worker:
importScripts( 'script/to/import.js' + self.location.search );
这将适用?buster=12345
(或者无论你的randomNumberOrBuildNumber
设置为)到工人的负载和任何importScripts()
工人拨打的电话。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)