есть ли какой-либо способ сказать v8 сохранить p-код для следующей «страницы», которая загружает ту же библиотеку javascript

#javascript #v8

Вопрос:

Сценарий: Для того, чтобы сделать lighthouse analytics счастливым (т. Е. Уменьшить загрузку, блокировку и т. Д. и т. Д. и т. Д.), веб-приложение было разделено так, чтобы ранее диалоги/последовательности на странице теперь были независимыми, впоследствии загруженными страницами.

Естественно, это означает, что загрузка одной ссылки на библиотеку теперь стала загрузкой для каждой из результирующих диалоговых страниц. Что касается размера загрузки, любой механизм кэширования улучшит любой множитель. Хотя v8/closure использовался для массового сокращения размера загрузки — это оставляет проблему блокировки повторного анализа и перекомпиляции для каждого экземпляра (когда на самом деле должен потребоваться только один анализ/компиляция на целевом/клиенте, если бы мы были оптимальными).

Итак, вопрос в том, существует ли какой-либо механизм для обозначения библиотечного кода, чтобы движок v8 сохранял и повторно использовал p-код, который он проанализировал в первый раз?? [Обратите внимание, что реализация ServiceWorker не является ответом для библиотеки/платформы.]

Ответ №1:

V8, в сочетании с тем, как он встроен в Chrome, действительно имеет возможность кэшировать код. Вам не нужно ничего отмечать; так же, как и кэширование HTTP, браузер обладает определенной эвристикой, позволяющей самостоятельно решать, следует ли/когда кэшировать данные.

Комментарии:

1. Спасибо. Я надеялся на что-то подобное, но не нашел никаких ссылок в документации. Кэширование кода значительно облегчает «постепенное» создание приложения — загружайте часть основы у входной двери, немного больше здесь и немного больше там, основываясь на том, что было загружено по мере прохождения пользователем любых последовательностей.