InstallEvent: addRoutes() Methode
Eingeschränkt verfügbar
Diese Funktion ist nicht Baseline, da sie in einigen der am weitesten verbreiteten Browser nicht funktioniert.
Want more support for this feature? Tell us why.
Die addRoutes() Methode der InstallEvent-Schnittstelle spezifiziert eine oder mehrere statische Routen, die Regeln für das Abrufen bestimmter Ressourcen definieren, die verwendet werden, noch bevor der Service Worker gestartet wird. Dies ermöglicht es Ihnen beispielsweise, einen Service Worker zu umgehen, wenn Sie immer eine Ressource aus dem Netzwerk oder einem Browser-Cache abrufen möchten und vermeidet so den Leistungsaufwand unnötiger Service Worker-Zyklen.
Syntax
addRoutes(routerRules)
Parameter
routerRules-
Ein einzelnes Objekt oder ein Array von einem oder mehreren Objekten, das Regeln repräsentiert, wie bestimmte Ressourcen abgerufen werden sollten. Jedes
routerRules-Objekt enthält folgende Eigenschaften:condition-
Ein Objekt, das eine oder mehrere Bedingungen definiert, die festlegen, welche Ressourcen dieser Regel entsprechen sollten. Die folgenden Eigenschaften können enthalten sein; wenn mehrere Eigenschaften verwendet werden, muss eine Ressource alle angegebenen Bedingungen erfüllen, um der Regel zu entsprechen.
notOptional-
Ein
condition-Objekt, das Bedingungen definiert, die ausdrücklich nicht erfüllt werden dürfen, um der Regel zu entsprechen. Bedingungen, die innerhalb einernot-Bedingung definiert sind, sind mit anderen Bedingungen gegenseitig ausschließend. orOptional-
Ein Array von
condition-Objekten. Ein Satz dieser definierten Bedingungen muss erfüllt sein, um der Regel zu entsprechen. Bedingungen, die innerhalb eineror-Bedingung definiert sind, sind mit anderen Bedingungen gegenseitig ausschließend. requestMethodOptional-
Ein String, der die HTTP-Methode repräsentiert, mit der eine Anfrage gesendet werden sollte, damit sie der Regel entspricht, wie z.B.
"get","put"oder"head". requestModeOptional-
Ein String, der den Modus repräsentiert, den eine Anfrage haben sollte, damit sie der Regel entspricht, zum Beispiel
"same-origin","no-cors"oder"cors". requestDestinationOptional-
Ein String, der das Ziel einer Anfrage repräsentiert, d.h. welcher Inhaltstyp angefordert werden soll, damit sie der Regel entspricht. Beispiele umfassen
"audio","document","script"und"worker". runningStatusOptional-
Ein aufgezählter Wert, der den erforderlichen Betriebsstatus des Service Workers repräsentiert, damit eine Anfrage der Regel entspricht. Werte können
"running"oder"not-running"sein. urlPatternOptional-
Eine
URLPattern-Instanz oder einURLPattern()-Konstruktor-input-Muster, das die URLs repräsentiert, die der Regel entsprechen. Reguläre Ausdrucksgruppen sind nicht erlaubt, daher mussURLPattern.hasRegExpGroupsfalsesein.
source-
Ein aufgezählter Wert oder ein Objekt, das die Quelle spezifiziert, aus der übereinstimmende Ressourcen geladen werden. Mögliche aufgezählte Werte sind:
"cache"-
Ressourcen werden aus einem Browser-
Cachegeladen. "fetch-event"-
Ressourcen werden über den
fetch-Ereignis-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 nicht. "network"-
Ressourcen werden aus dem Netzwerk geladen.
"race-network-and-fetch-handler"-
Versuche werden unternommen, Ressourcen gleichzeitig aus dem Netzwerk und dem
fetch-Ereignis-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,cacheName, enthält, deren Wert ein String ist, der den Namen eines Browser-Cacherepräsentiert. Übereinstimmende Ressourcen werden aus diesem spezifischen benannten Cache geladen, falls dieser existiert.
Rückgabewert
Ein Promise, der sich mit undefined erfüllt.
Ausnahmen
TypeErrorDOMException-
Wird ausgelöst, wenn eines oder mehrere der Regelobjekte in
routerRulesungültig sind oder einensource-Wert von"fetch-event"haben, wenn der zugehörige Service Worker keinenfetch-Ereignis-Handler hat. Auch ausgelöst, wenn Sie versuchen,ormit einem anderen Bedingungstyp zu kombinieren.
Beispiele
>Leite spezifische Anfragen zum Netzwerk, wenn der Service Worker nicht läuft
Im folgenden Beispiel werden URLs, die mit /articles beginnen, zum Netzwerk geleitet, wenn der Service Worker derzeit nicht läuft:
addEventListener("install", (event) => {
event.addRoutes({
condition: {
urlPattern: "/articles/*",
runningStatus: "not-running",
},
source: "network",
});
});
Leite Formular-POST-Anfragen zum Netzwerk
Im folgenden Beispiel werden POST-Anfragen an ein Formular direkt zum Netzwerk gesendet und umgehen den Service Worker:
addEventListener("install", (event) => {
event.addRoutes({
condition: {
urlPattern: "/form/*",
requestMethod: "post",
},
source: "network",
});
});
Leite bestimmte Bildtypen-Anfragen zu einem benannten Cache
Im folgenden Beispiel wird der Browser-Cache mit dem Namen "pictures" verwendet, um Dateien mit den Endungen .png oder .jpg abzurufen:
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, sodass die angeforderten Ressourcen immer noch 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 Endungen .png oder .jpg nur dann übereinstimmen lassen möchten, wenn die requestMethod get ist, müssten 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
| Spezifikation |
|---|
| Service Workers Nightly> # register-router-method> |