Javascript WebAssembly隐式缓存不';不要在铬75上工作

Javascript WebAssembly隐式缓存不';不要在铬75上工作,javascript,google-chrome,caching,google-chrome-devtools,webassembly,Javascript,Google Chrome,Caching,Google Chrome Devtools,Webassembly,我有一个wasm的工作页面,在Chrome上编译需要5秒钟。我关注这篇文章: 关于隐式缓存使缓存在第二次重新加载时工作。当我每次重新加载页面时,编译需要5秒钟 我使用的是WebAssembly.instantiateStreaming,它获得一个获取响应。 使用Chrome DevTool,我可以看到服务器返回304(但是获取对象的状态是200) wasm大小为350万,服务器返回正确的内容类型标题:application/wasm 当我使用跟踪时 要调试V8行为,我可以看到它编写缓存V8.

我有一个wasm的工作页面,在
Chrome
上编译需要5秒钟。我关注这篇文章:

关于隐式缓存使缓存在第二次重新加载时工作。当我每次重新加载页面时,编译需要5秒钟

我使用的是
WebAssembly.instantiateStreaming
,它获得一个获取响应。 使用Chrome DevTool,我可以看到服务器返回304(但是获取对象的状态是
200

wasm
大小为350万,服务器返回正确的内容类型标题:
application/wasm

当我使用跟踪时

要调试
V8行为
,我可以看到它编写缓存
V8.wasm.cachedModule
,但从不读取它。我没有得到
v8.wasm.moduleCacheHit
v8.wasm.moduleCacheInvalid
因为每次跑步都是冷跑


启用
WebAssembly编译模块缓存
无效

(async () => {
  const fetchPromise = fetch('mybig.wasm');
  const { instance } = await WebAssembly.instantiateStreaming(fetchPromise, importObject);
  console.log(instance);
})();

我没有收到任何错误,一切正常,但没有缓存。

这是chrome 75中的一个bug。我编译的webassembly是46兆,它编写跟踪
v8.wasm.cachedModule
,但实际上无法将其添加到缓存中。 使用Chrome 77解决此问题


是否已启用缓存
about:flags
->
WebAssembly编译模块缓存
,如果不手动启用,我相信它只占稳定通道atm的1%。启用
WebAssembly编译模块缓存
没有效果。出于好奇,您的程序集大于128 kB,因为当前它的缓存不会小于此值。另外,请确保您的后端正在发送内容类型为的
application/wasm
。我的程序集是350万,是的,服务器返回
application/wasm
,抱歉,这里没有主意了。所有东西看起来和听起来都应该缓存。在Chrome的“网络”选项卡中,您没有意外点击“禁用缓存”,其他资产是否显示缓存正常?。。我认为您唯一可以尝试的另一件事是,不要首先获得304,而是尝试将服务器头设置为长缓存时间,并使用缓存破坏进行更新。