InstallEvent: addRoutes() Methode
Limited availability
This feature is not Baseline because it does not work in some of the most widely-used browsers.
Experimentell: Dies ist eine experimentelle Technologie
Überprüfen Sie die Browser-Kompatibilitätstabelle sorgfältig vor der Verwendung auf produktiven Webseiten.
Die addRoutes() Methode der InstallEvent-Schnittstelle spezifiziert eine oder mehrere statische Routen, die Regeln für das Abrufen bestimmter Ressourcen definieren, die noch vor dem Start des Service Workers verwendet werden. Dies ermöglicht es Ihnen, z. B. einen Service Worker zu umgehen, wenn Sie eine Ressource immer aus dem Netzwerk oder einem Browser-Cache abrufen möchten, und vermeidet den Leistungsaufwand unnötiger Service Worker-Zyklen.
Syntax
addRoutes(routerRules)
Parameter
routerRules-
Ein einzelnes Objekt oder ein Array von einem oder mehreren Objekten, die Regeln dafür darstellen, wie bestimmte Ressourcen abgerufen werden sollen. Jedes
routerRules-Objekt enthält die folgenden Eigenschaften:condition-
Ein Objekt, das eine oder mehrere Bedingungen definiert, die angeben, welche Ressourcen mit dieser Regel übereinstimmen sollen. Die folgenden Eigenschaften können enthalten sein; wenn mehrere Eigenschaften verwendet werden, muss eine Ressource alle angegebenen Bedingungen erfüllen, um mit der Regel übereinzustimmen.
notOptional-
Ein
condition-Objekt, das Bedingungen definiert, die ausdrücklich nicht erfüllt werden dürfen, um mit der Regel übereinzustimmen. Bedingungen, die innerhalb einernot-Bedingung definiert sind, schließen sich gegenseitig mit anderen Bedingungen aus. orOptional-
Ein Array von
condition-Objekten. Eines dieser definierten Bedingungssets muss erfüllt sein, um mit der Regel übereinzustimmen. Bedingungen, die innerhalb eineror-Bedingung definiert sind, schließen sich gegenseitig mit anderen Bedingungen aus. requestMethodOptional-
Ein String, der die HTTP-Methode darstellt, mit der eine Anfrage gesendet werden soll, damit sie mit der Regel übereinstimmt, wie z. B.
"get","put"oder"head". requestModeOptional-
Ein String, der den Modus darstellt, den eine Anfrage haben soll, um mit der Regel übereinzustimmen, zum Beispiel
"same-origin","no-cors"oder"cors". requestDestinationOptional-
Ein String, der das Ziel einer Anfrage darstellt, d.h. welcher Inhaltstyp angefordert werden soll, damit sie mit der Regel übereinstimmt. Beispiele sind
"audio","document","script"und"worker". runningStatusOptional-
Ein enumerierter Wert, der den erforderlichen Betriebsstatus des Service Workers für eine Anfrage darstellt, um mit der Regel übereinzustimmen. Werte können
"running"oder"not-running"sein. urlPatternOptional-
Eine
URLPattern-Instanz oder einURLPattern()-Konstruktor-input-Muster, das die URLs darstellt, die mit der Regel übereinstimmen. Reguläre Ausdrucks-Capturing-Gruppen sind nicht erlaubt, daher mussURLPattern.hasRegExpGroupsfalsesein.
source-
Ein enumerierter Wert oder ein Objekt, das die Quelle angibt, von der übereinstimmende Ressourcen geladen werden. Mögliche enumerierte Werte sind:
"cache"-
Ressourcen werden aus einem Browser-
Cachegeladen. "fetch-event"-
Ressourcen werden über den
fetch-Event-Handler des Service Workers geladen. Dies kann mit der"runningStatus"-Bedingung kombiniert werden, um Ressourcen aus einem Service Worker zu laden, wenn er läuft, und auf eine statische Route im Netzwerk zurückzugreifen, wenn dies nicht der Fall ist. "network"-
Ressourcen werden aus dem Netzwerk geladen.
"race-network-and-fetch-handler"-
Es wird versucht, Ressourcen gleichzeitig aus dem Netzwerk und dem
fetch-Event-Handler des Service Workers zu laden. Welches auch immer zuerst abgeschlossen wird, wird verwendet.
Der
source-Wert kann auch auf ein Objekt gesetzt werden, das eine einzelne Eigenschaft enthält,cacheName, dessen Wert ein String ist, der den Namen eines Browser-Cachedarstellt. Übereinstimmende Ressourcen werden aus diesem spezifisch benannten Cache geladen, wenn er existiert.
Rückgabewert
Ein Promise, das sich mit undefined erfüllt.
Ausnahmen
TypeErrorDOMException-
Wird geworfen, wenn eines oder mehrere der Regelobjekte in
routerRulesungültig sind oder einensource-Wert von"fetch-event"haben, wenn der zugehörige Service Worker keinenfetch-Event-Handler hat. Wird auch geworfen, wenn Sie versuchen,ormit einem anderen Bedingungstyp zu kombinieren.
Beispiele
>Spezifische Anfragen an das Netzwerk leiten, wenn der Service Worker nicht läuft
Im folgenden Beispiel werden URLs, die mit /articles beginnen, an das Netzwerk geleitet, wenn der Service Worker derzeit nicht läuft:
addEventListener("install", (event) => {
event.addRoutes({
condition: {
urlPattern: "/articles/*",
runningStatus: "not-running",
},
source: "network",
});
});
Formulare-POST-Anfragen an das Netzwerk leiten
Im folgenden Beispiel werden POST-Anfragen an ein Formular direkt an das Netzwerk gesendet und umgehen den Service Worker:
addEventListener("install", (event) => {
event.addRoutes({
condition: {
urlPattern: "/form/*",
requestMethod: "post",
},
source: "network",
});
});
Bestimmte Bildanfragetypen an einen benannten Cache leiten
Im folgenden Beispiel wird der Browser-Cache mit dem Namen "pictures" zum Abrufen von Dateien mit den Erweiterungen .png oder .jpg verwendet:
addEventListener("install", (event) => {
event.addRoutes({
condition: {
or: [{ urlPattern: "*.png" }, { urlPattern: "*.jpg" }],
},
source: {
cacheName: "pictures",
},
});
});
Hinweis: Wenn der Cache nicht existiert, verwendet der Browser standardmäßig das Netzwerk, damit die angeforderten Ressourcen dennoch abgerufen werden können, sofern das Netzwerk verfügbar ist.
Sie können or nicht mit einer anderen Bedingung kombinieren – dies führt zu einem TypeError. Wenn Sie beispielsweise Dateien mit den Erweiterungen .png oder .jpg nur dann abgleichen möchten, wenn die requestMethod get ist, müssen Sie zwei separate Bedingungen angeben:
addEventListener("install", (event) => {
event.addRoutes(
{
condition: {
urlPattern: "*.png",
requestMethod: "get",
},
source: {
cacheName: "pictures",
},
},
{
condition: {
urlPattern: "*.jpg",
requestMethod: "get",
},
source: {
cacheName: "pictures",
},
},
);
});
Spezifikationen
| Specification |
|---|
| Service Workers> # register-router-method> |
Browser-Kompatibilität
Loading…
Siehe auch
InstallEventinstall-Event- Service Worker API
- Use the Service Worker Static Routing API to bypass the service worker for specific paths auf
developer.chrome.com(2024)