Web worker文件被缓存,并且从未在IE 11中重新加载 [英] Web worker file is cached and never re-loaded in IE 11

查看:724
本文介绍了Web worker文件被缓存,并且从未在IE 11中重新加载的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I am running a simple HTML5 app that works in Chrome and Firefox. It uses a web worker, as in:

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

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

I have experimented for over an hour in IE, and I finally found that the web worker's code is never reloaded. When I get the version that it has, to throw an error, the debugger shows me a completely outdated version of the worker code file, even though, all other files have been reloaded properly.

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

I flushed the cache, using the standard advice found everywhere: Safety -> Delete Browsing History -> Select items -> Ok -> Wait -> Ctrl+F5 to reload -> BAM, thee debugger still shows 100% the same file as several hours ago (remember that reloading works as expected in Chrome and FF).

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

When I look at the Network profiler, I see:

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 调用显示,还有上面提到的堆栈跟踪)。但它只是运行一个完全过时的版本,即使我将整个缓存刷新了几十次。

I don't know why it says "Pending"; I can see that the worker already runs: I can see the work of the worker being done (e.g. the importScripts calls show up, and there are also above mentioned stacktraces). But it simply runs a completely outdated version, even though I flushed the entire cache tens of times.

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

Is this an uber-bug, or am I being stupid?

推荐答案

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

The same problem exists in Chrome. In order to get around it you can use a cache buster:

主要代码:

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()调用工人制作。

This will apply ?buster=12345 (or whatever your randomNumberOrBuildNumber is set to) to both the loading of the worker and any importScripts() calls the worker makes.

这篇关于Web worker文件被缓存,并且从未在IE 11中重新加载的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆