InstallEvent: addRoutes() Methode
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 legt eine oder mehrere statische Routen fest, die Regeln zum Abrufen bestimmter Ressourcen definieren, welche auch vor dem Start des Service Workers verwendet werden. Damit können Sie zum Beispiel einen Service Worker umgehen, wenn Sie stets eine Ressource aus dem Netzwerk oder einem Browser-Cache
abrufen möchten, und vermeiden so 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 repräsentieren, wie bestimmte Ressourcen abgerufen werden sollen. Jedes
routerRules
Objekt enthält die folgenden Eigenschaften:condition
-
Ein Objekt, das eine oder mehrere Bedingungen definiert, welche spezifizieren, welche Ressourcen mit dieser Regel übereinstimmen sollen. Es können die folgenden Eigenschaften enthalten sein; wenn mehrere Eigenschaften verwendet werden, muss eine Ressource alle angegebenen Bedingungen erfüllen, um mit der Regel übereinzustimmen.
not
Optional-
Ein
condition
-Objekt, das Bedingungen definiert, die ausdrücklich nicht erfüllt sein müssen, um mit der Regel übereinzustimmen. Bedingungen, die innerhalb einernot
-Bedingung definiert sind, schließen sich gegenseitig mit anderen Bedingungen aus. or
Optional-
Ein Array von
condition
-Objekten. Eine Menge dieser definierten Bedingungen muss erfüllt sein, um mit der Regel übereinzustimmen. Bedingungen, die innerhalb eineror
-Bedingung definiert sind, schließen sich gegenseitig mit anderen Bedingungen aus. requestMethod
Optional-
Ein Zeichenfolgenwert, der die HTTP-Methode beschreibt, mit der eine Anfrage gesendet werden soll, damit sie mit der Regel übereinstimmt, wie zum Beispiel
"get"
,"put"
oder"head"
. requestMode
Optional-
Ein Zeichenfolgenwert, der den Modus einer Anfrage beschreibt, damit sie mit der Regel übereinstimmt, zum Beispiel
"same-origin"
,"no-cors"
oder"cors"
. requestDestination
Optional-
Ein Zeichenfolgenwert, der das Ziel einer Anfrage beschreibt, also welcher Inhaltstyp angefordert werden soll, damit sie mit der Regel übereinstimmt. Beispiele umfassen
"audio"
,"document"
,"script"
und"worker"
. runningStatus
Optional-
Ein enumerierter Wert, der den geforderten Betriebsstatus des Service Workers repräsentiert, damit eine Anfrage mit der Regel übereinstimmt. Mögliche Werte sind
"running"
oder"not-running"
. urlPattern
Optional-
Eine
URLPattern
-Instanz oder einURLPattern()
-Konstruktorinput
Muster, das die URLs repräsentiert, die mit der Regel übereinstimmen.
source
-
Ein enumerierter Wert oder ein Objekt, das die Quelle spezifiziert, aus der passende Ressourcen geladen werden. Mögliche enumerierte Werte sind:
"cache"
-
Ressourcen werden aus einem Browser-
Cache
geladen. "fetch-event"
-
Ressourcen werden über den
fetch
-Ereignishandler des Service Workers geladen. Dies kann mit der"runningStatus"
-Bedingung kombiniert werden, um Ressourcen von 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"
-
Es wird versucht, Ressourcen sowohl aus dem Netzwerk als auch über den
fetch
-Ereignishandler des Service Workers gleichzeitig zu laden. Das zuerst abgeschlossene wird verwendet.
Der
source
Wert kann auch auf ein Objekt gesetzt werden, das eine einzelne Eigenschaft,cacheName
, enthält, deren Wert eine Zeichenfolge ist, die den Namen eines Browser-Cache
repräsentiert. Passende Ressourcen werden aus diesem spezifischen benannten Cache geladen, falls er existiert.
Rückgabewert
Ein Promise
, das mit undefined
erfüllt wird.
Ausnahmen
TypeError
DOMException
-
Wird ausgelöst, wenn eines oder mehrere der Regeln-Objekte innerhalb von
routerRules
ungültig sind oder einensource
Wert von"fetch-event"
haben, wenn der zugehörige Service Worker keinenfetch
-Ereignishandler hat. Wird auch ausgelöst, wenn Sie versuchen,or
mit einem anderen Bedingungstyp zu kombinieren.
Beispiele
Bestimmte Anfragen zum Netzwerk leiten, 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",
});
});
Formular-POST-Anfragen zum 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 zu einem benannten Cache leiten
Im folgenden Beispiel wird der Browser-Cache
mit dem Namen "pictures"
verwendet, um Dateien mit den Erweiterungen .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 weiterhin bezogen 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
abgleichen möchten, aber nur, 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
Specification |
---|
Service Workers # register-router-method |