我有一个Web应用程序,它只在几页上使用Web Workers来对主线程进行一些数字运算。我使用navigator.hardwareConcurrency
来确定要初始化的工作人员数量。 每个工作人员需要使用importScripts
函数导入~20个脚本文件。
虽然功能运行正常,但我在Chrome开发工具中注意到浏览器正在通过网络为每个工作线程请求每个脚本。脚本确实包含缓存控制头,因此后续加载很快,但较慢连接上的第一次加载非常慢。
例如,在我的机器navigator.hardwareConcurrency
上返回8,所以我最终加载了8 x 20 = 160个JS资源......
随着CPU的并发性增加,我认为这个问题会随着时间的推移而变得更糟。我刚检查一下,我朋友的AMD Ryzen CPU返回16,总共下载了320个脚本!我想找到一种方法,只为所有工人加载这些脚本一次,无论有多少工人被初始化。