- Метод 1. Базовая предварительная загрузка навигации с помощью Workbox.
Первый метод демонстрирует базовую реализацию предварительной загрузки навигации с помощью Workbox. Этот фрагмент кода регистрирует работника службы в Workbox и включает предварительную загрузку навигации.
// Import Workbox
importScripts('https://storage.googleapis.com/workbox-cdn/releases/6.3.0/workbox-sw.js');
// Register service worker
workbox.routing.registerRoute(
({ event }) => event.request.mode === 'navigate',
new workbox.strategies.NavigationPreload({ enabled: true })
);
- Метод 2. Настройка ответа на предварительную загрузку.
В этом методе мы настраиваем ответ на предварительную загрузку, изменяя заголовки. Это может быть полезно, если вы хотите добавить дополнительные параметры кэширования или контролировать поведение ответа.
workbox.routing.registerRoute(
({ event }) => event.request.mode === 'navigate',
new workbox.strategies.NavigationPreload({
enabled: true,
plugins: [
{
cacheWillUpdate: async ({ response }) => {
const headers = new Headers(response.headers);
headers.set('Cache-Control', 'public, max-age=3600');
const modifiedResponse = new Response(response.body, { headers });
return modifiedResponse;
},
},
],
})
);
- Метод 3. Условное включение предварительной загрузки навигации.
В некоторых случаях может потребоваться условное включение предварительной загрузки навигации на основе определенных критериев. Этот метод показывает, как включить предварительную загрузку навигации только для определенных URL-адресов.
workbox.routing.registerRoute(
({ event }) => event.request.mode === 'navigate' && event.request.url.startsWith('https://example.com/'),
new workbox.strategies.NavigationPreload({ enabled: true })
);
- Метод 4. Динамическое изменение конфигурации предварительной загрузки навигации.
Этот метод демонстрирует, как динамически изменять конфигурацию предварительной загрузки навигации в зависимости от условий выполнения.
const navigationPreload = new workbox.strategies.NavigationPreload({ enabled: true });
workbox.routing.registerRoute(
({ event }) => event.request.mode === 'navigate',
async ({ event }) => {
if (shouldEnableNavigationPreload()) {
navigationPreload.enabled = true;
} else {
navigationPreload.enabled = false;
}
return navigationPreload.handle({ event });
}
);
Предварительная загрузка навигации — это мощный метод повышения производительности веб-сайта, а Workbox упрощает его внедрение, предоставляя полный набор инструментов и стратегий. В этой статье мы рассмотрели различные методы реализации предварительной загрузки навигации с помощью Workbox, включая базовую реализацию, настройку ответа на предварительную загрузку, условное включение и изменения динамической конфигурации. Включив эти методы в рабочий процесс веб-разработки, вы сможете значительно сократить время загрузки вашего веб-сайта, что приведет к улучшению пользовательского опыта и улучшению SEO.