WebAssembly Неявное кэширование не работает в Chrome 75 - PullRequest
2 голосов
/ 11 июля 2019

У меня есть рабочая страница с wasm, которая компилируется на Chrome за 5 секунд. Я следую за этой статьей:

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);
})();

Я не получаю никакой ошибки, и все работает как положено, но без кэширования.

1 Ответ

0 голосов
/ 23 июля 2019

Это ошибка в chrome 75. Моя скомпилированная веб-сборка была 46 мегабайт, она записывает трассировку v8.wasm.cachedModule, но фактически не может добавить ее в кеш. Использование Chrome 77 исправит эту проблему.

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

...