Artykuł „Przyspiesz proces Service Worker z wstępnym wczytywaniem nawigacji” dobrze wyjaśnia, czym jest wstępne ładowanie nawigacji i jakie korzyści oferuje aplikacjom internetowym, których mechanizm Service Worker nie obsługuje bezpośrednio żądań nawigacji.
Co robi ten moduł?
workbox-navigation-preload
sprawdzi w czasie działania, czy bieżąca przeglądarka obsługuje wstępne wczytywanie nawigacji. Jeśli tak, automatycznie utworzy moduł obsługi zdarzeń activate
, który włączy ten moduł.
Udostępniony kod w workbox-core
, który obsługuje tworzenie żądań sieciowych we wszystkich obszarach Workbox, również został zaktualizowany tak, aby automatycznie korzystał z odpowiedzi wstępnego wczytywania, jeśli jest ona dostępna. Oznacza to, że każda z wbudowanych strategii może automatycznie korzystać z wstępnego wczytywania nawigacji po jej włączeniu.
Kto powinien włączyć wstępne wczytywanie nawigacji?
Deweloperzy, którzy obsługują już nawigację, odpowiadając z użyciem kodu HTML w pamięci podręcznej (potencjalnie skonfigurowanego przez funkcję zastępczą App Shell), nie muszą włączać wstępnego wczytywania nawigacji. Ta funkcja ma na celu skrócenie opóźnień w nawigacji w przypadku programistów, którzy nie mogą wstępnie buforować kodu HTML, ale chcą używać Workbox do obsługi buforowania innych zasobów w swoich witrynach.
Jeśli np. przestrzegasz wzorca App Shell i masz już skonfigurowaną trasę nawigacji, aby korzystać z pamięci podręcznej HTML, włączenie wstępnego wczytywania nawigacji nie będzie miało wpływu na dane. Odpowiedź sieci powiązana z żądaniem wstępnego wczytywania nigdy nie zostanie użyta, ponieważ kod HTML zapisany w pamięci podręcznej będzie używany bezwarunkowo.
Podstawowe użycie
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);
Jaka jest historia pomocy przeglądarki?
Obecnie Google Chrome jest jedyną przeglądarką, która obsługuje wstępne wczytywanie nawigacji.
enable()
sprawdzi obsługę przeglądarki w czasie działania i próbuje włączyć wstępne wczytywanie nawigacji tylko wtedy, gdy obsługuje ją bieżąca przeglądarka. Dlatego możesz bezwarunkowo wywołać enable()
w skrypcie service worker.
Pamiętaj, że skrócenie opóźnień w nawigacji w tych przeglądarkach nie będzie korzystne. Zalecamy staranne pomiary wpływu na wydajność związane z wysyłaniem skryptu service worker, 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 wstępne wczytywanie nawigacji, spowoduje to jej wyłączenie.
enable()
workbox-navigation-preload.enable(
headerValue?: string,
)
Jeśli przeglądarka obsługuje wstępne wczytywanie nawigacji, spowoduje to jej włączenie.
Parametry
-
headerValue
ciąg znaków opcjonalny
isSupported()
workbox-navigation-preload.isSupported()
Akcje powrotne
-
boolean
Wskazuje, czy obecna przeglądarka obsługuje wstępne wczytywanie nawigacji.