javascript - WebAssembly 隐式缓存在 Chrome 75 上不起作用

标签 javascript google-chrome caching google-chrome-devtools webassembly

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

https://v8.dev/blog/v8-release-75#implicit-caching

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

我正在使用 WebAssembly.instantiateStreaming 获取获取响应。 使用 Chrome DevTool 我可以看到服务器返回 304(但获取对象的状态为 200)

wasm 大小为 3.5 兆,服务器返回正确的 Content-Type header :application/wasm

当我使用跟踪时

https://v8.dev/blog/wasm-code-caching#tracing

为了调试 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 中的一个错误。我编译的 webassembly 是 46 兆,它写入跟踪 v8.wasm.cachedModule 但未能真正将其添加到缓存中。 使用 Chrome 77 解决了这个问题。

https://bugs.chromium.org/p/chromium/issues/detail?id=719172#c63

关于javascript - WebAssembly 隐式缓存在 Chrome 75 上不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56984394/

相关文章:

html - 单击刷新按钮时,离线模式下 HTML 应用程序缓存出现问题

javascript - Datatable 解释 javascript 数据

html - 谷歌浏览器奇怪的风格行为,悬停时有负边距

javascript - Node JS Puppeteer 单击没有名称或 ID 的 li 元素

google-chrome - 如何配置 'watir' 以使用现有的 chrome 用户配置文件(使用 chrome.exe --user-data-dir 创建)

javascript - 如何防止 chrome 扩展在同一弹出窗口仍然打开时重新打开它?

caching - 在适用于 Windows Phone 的 RestSharp 中刷新

ios - AFNetworking 2.0 缓存问题

java - Ajax 请求不适用于 Spring Controller

javascript - 使用ajax或退出浏览器时自动注销 PHP