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

Javascript Web worker文件被缓存,并且从未在IE 11中重新加载,javascript,html,internet-explorer,caching,web-worker,Javascript,Html,Internet Explorer,Caching,Web Worker,我正在运行一个简单的HTML5应用程序,可以在Chrome和Firefox上运行。它使用web worker,如中所示: var worker = new Worker("the/worker/URL/Code.js"); 我在IE中进行了一个多小时的实验,最终发现web工作者的代码从未重新加载过。当我得到它的版本时,为了抛出一个错误,调试器会向我显示一个完全过时的工作代码文件版本,尽管所有其他文件都已正确重新加载 我使用随处可见的标准建议刷新了缓存:安全->删除浏览历史->选择项->确定->

我正在运行一个简单的HTML5应用程序,可以在Chrome和Firefox上运行。它使用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
我不知道为什么它说“待定”;我可以看到worker已经运行:我可以看到worker正在完成的工作(例如,
importScripts
调用显示,并且还有上面提到的stacktrace)。但它只是运行一个完全过时的版本,即使我刷新了整个缓存几十次


这是一个优步bug,还是我很愚蠢?

Chrome中也存在同样的问题。为了绕过它,您可以使用缓存buster:

主要代码:

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

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

这将应用于工作程序的加载和工作程序进行的任何
importScripts()
调用。

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


我建议您使用我建议的方法:它可以是响应的http头。(特别是cache control、expires、etag和last modified)我建议您在developer tools的网络面板中查看http头并与我们共享。也许你会马上意识到这个问题。@JohannEchavarria我得到304。所以出于某种原因,它只是积极地隐藏婴儿。问题仍然存在:缓存刷新怎么可能不能解决这个问题?304只是响应请求的状态代码。它缓存baby的原因可能是http头。请打开F12>网络面板>选择webworker url>在详细信息选项卡中单击>选择响应标题>拍照并在此处共享。一些与缓存相关的http头是:cache control、expires、etag和last-modified.Hard reload在Chrome和FireFox中对我有用(在Chrome中,确保打开开发工具,然后右键单击reload图标->“Hard reload”)。我一直在使用Cmd+Shift+R(MacBook Pro)进行“硬重新加载”,但它仍然缓存导入的脚本。可能是通过菜单可以重新加载,但是当你实际开发一个导入的脚本时,通过菜单来重新加载页面来测试一些东西是对工作流的巨大消耗。我不知道为什么Chrome没有“清除缓存并重新加载页面”的快捷键。。。但要做到这一点也不难,只需点击两下:)