W artykule „Przygotowanie nawigacji w ramach skryptu service worker” znajdziesz szczegółowe informacje o tym, czym jest wstępne wczytywanie nawigacji, i o korzyściach, jakie daje ono aplikacjom internetowym, których skrypt service worker nie obsługuje wprost żądań nawigacyjnych.
Co robi ten moduł?
workbox-navigation-preload
sprawdza w czasie działania, czy bieżąca przeglądarka obsługuje wstępny wczytywanie nawigacji. Jeśli tak, automatycznie tworzy element obsługi zdarzeń activate
, aby go włączyć.
Udostępniony kod w workbox-core
, który obsługuje żądania sieci w Workbox, został również zaktualizowany, aby automatycznie korzystać z odpowiedzi wstępnego wczytania, jeśli jest ona dostępna. Oznacza to, że po włączeniu tej funkcji każda z wbudowanych strategii może automatycznie korzystać z wstępnego wczytywania nawigacji.
Kto powinien włączyć wstępny wczytywanie nawigacji?
Deweloperzy, którzy już obsługują nawigację, odpowiadając za pomocą zarchiwizowanego kodu HTML (potencjalnie skonfigurowanego z zastępczą aplikacją App Shell), nie muszą włączać wstępnego wczytywania nawigacji. Ta funkcja ma na celu zmniejszenie opóźnień w nawigacji w przypadku deweloperów, którzy nie mogą z powodu ograniczeń pamięci podręcznej zarchiwizować HTML-a, ale chcą używać Workboxa do obsługi pamięci podręcznej innych zasobów na swoich stronach.
Jeśli np. używasz szablonu App Shell i masz już skonfigurowaną ścieżkę nawigacji, aby korzystać z wstępnie zapisanego HTML, włączenie wstępnego wczytywania nawigacji będzie stratą czasu. Odpowiedź sieci powiązana z żądaniem pobierania wstępnego nigdy nie zostanie użyta, ponieważ bezwarunkowo zostanie użyty wcześniej pobrany kod HTML.
Podstawowe zastosowanie
import * as navigationPreload from 'workbox-navigation-preload';
import {NetworkFirst} from 'workbox-strategies';
import {registerRoute, NavigationRoute} from 'workbox-routing';
// Enable navigation preload.
navigationPreload.enable();
// Swap in NetworkOnly, CacheFirst, or StaleWhileRevalidate as needed.
const strategy = new NetworkFirst({
cacheName: 'cached-navigations',
plugins: [
// Any plugins, like `ExpirationPlugin`, etc.
],
});
const navigationRoute = new NavigationRoute(strategy, {
// Optionally, provide a allow/denylist of RegExps to determine
// which paths will match this route.
// allowlist: [],
// denylist: [],
});
registerRoute(navigationRoute);
Jak wygląda obsługa w przeglądarce?
Obecnie Google Chrome jest jedyną przeglądarką, która obsługuje wstępny wczytywanie nawigacji.
enable()
sprawdza obsługę przeglądarki w czasie działania i próbuje włączyć wstępne wczytywanie nawigacji tylko wtedy, gdy przeglądarka obsługuje tę funkcję. Dlatego w Twoim skrypcie service worker możesz bez obaw wywoływać funkcję enable()
.
Pamiętaj, że te przeglądarki nie skorzystają z redukcji opóźnienia nawigacji. Zalecamy dokładne zmierzenie wpływu na wydajność wdrożenia workera usługi, który nie obsługuje żądań nawigacji i nie korzysta z wstępnego wczytywania nawigacji.
Metody
disable()
workbox-navigation-preload.disable()
Jeśli przeglądarka obsługuje funkcję Wstępnego wczytania nawigacji, zostanie ona wyłączona.
enable()
workbox-navigation-preload.enable(
headerValue?: string,
)
Jeśli przeglądarka obsługuje funkcję Wczytywanie nawigacji, zostanie ona włączona.
Parametry
-
headerValue
string opcjonalny
isSupported()
workbox-navigation-preload.isSupported()
Zwroty
-
wartość logiczna
Informacja o tym, czy bieżąca przeglądarka obsługuje wstępny wczytywanie nawigacji.