Dom*_*omi 5 html javascript internet-explorer caching web-worker
我正在运行一个可以在 Chrome 和 Firefox 中运行的简单 HTML5 应用程序。它使用网络工作者,如下所示:
\n\nvar worker = new Worker("the/worker/URL/Code.js");\nRun Code Online (Sandbox Code Playgroud)\n\n我在IE中实验了一个多小时,终于发现webworker的代码永远不会重新加载。当我获得它所具有的版本时,为了引发错误,调试器会向我显示工作代码文件的完全过时的版本,尽管所有其他文件都已正确重新加载。
\n\n我刷新了缓存,使用随处可见的标准建议:安全 -> 删除浏览历史记录 -> 选择项目 -> 确定 -> 等待 -> Ctrl+F5 重新加载 -> BAM,调试器仍然显示与多个文件 100% 相同的文件几小时前(请记住,在 Chrome 和 FF 中重新加载按预期进行)。
\n\n当我查看网络分析器时,我看到:
\n\nURL Protocol Method Result Type Received Taken Initiator Wait\xe2\x80\x8e\xe2\x80\x8e Start\xe2\x80\x8e\xe2\x80\x8e Request\xe2\x80\x8e\xe2\x80\x8e Response\xe2\x80\x8e\xe2\x80\x8e Cache read\xe2\x80\x8e\xe2\x80\x8e Gap\xe2\x80\x8e\xe2\x80\x8e\n/js/core/WorkerScriptCode.js (Pending...) GET (Pending...) (Pending...) 0 B (Pending...) webworker 1311 0 0 0 0 31\nRun Code Online (Sandbox Code Playgroud)\n\n我不知道为什么它显示“待处理”;我可以看到工作人员已经运行:我可以看到工作人员正在完成的工作(例如importScripts显示,并且还有上面提到的堆栈跟踪)。但它只是运行一个完全过时的版本,即使我刷新了整个缓存数十次。
这是一个超级错误,还是我很愚蠢?
\nChrome 中也存在同样的问题。为了解决这个问题,你可以使用缓存破坏器:
主要代码:
var buster = randomNumberOrBuildNumber;
var worker = new Worker( "the/worker/URL/Code.js?buster=" + buster );
Run Code Online (Sandbox Code Playgroud)
工人:
importScripts( 'script/to/import.js' + self.location.search );
Run Code Online (Sandbox Code Playgroud)
这将适用于?buster=12345(或您randomNumberOrBuildNumber设置的任何内容)工作人员的加载和importScripts()工作人员进行的任何调用。
| 归档时间: |
|
| 查看次数: |
2146 次 |
| 最近记录: |