我有一个wasm工作页面,需要5秒钟才能在Chrome
上进行编译。我正在关注这篇文章:
https://v8.dev/blog/v8-release-75#implicit-caching
关于隐式缓存,以使缓存在第二次重新加载时起作用。当我每次重新加载页面时,需要5秒钟的时间进行编译。
我正在使用WebAssembly.instantiateStreaming
来获取访存响应。
使用Chrome DevTool
,我可以看到服务器return 304
(但获取对象的状态为200
)
wasm
的大小为3.5兆,服务器返回正确的Content-Type标头:application/wasm
。
使用跟踪时
https://v8.dev/blog/wasm-code-caching#tracing
要调试V8 behaviour
,我可以看到它写入了缓存v8.wasm.cachedModule
,但从未读取。我没有v8.wasm.moduleCacheHit
也没有v8.wasm.moduleCacheInvalid
因为每次跑步都是冷战。
启用WebAssembly compiled module cache
无效。
(async () => {
const fetchPromise = fetch('mybig.wasm');
const { instance } = await WebAssembly.instantiateStreaming(fetchPromise, importObject);
console.log(instance);
})();
我没有收到任何错误,一切正常,但没有缓存。
答案 0 :(得分:0)
这是Chrome 75中的错误。我编译的Web程序集为46兆,它写入了迹线v8.wasm.cachedModule
,但无法将其实际添加到缓存中。
使用Chrome 77
可以解决此问题。
https://bugs.chromium.org/p/chromium/issues/detail?id=719172#c63