Befehl network.setCacheBehavior
Der Befehl network.setCacheBehavior des Moduls network steuert, ob der Browser bei Anfragen aus allen Kontexten oder aus bestimmten Top-Level-Kontexten seinen Cache verwendet oder umgeht.
Syntax
/* With required parameters */
{
"method": "network.setCacheBehavior",
"params": {
"cacheBehavior": "bypass"
}
}
/* With required and optional parameters */
{
"method": "network.setCacheBehavior",
"params": {
"cacheBehavior": "bypass",
"contexts": ["5e5e96e8-5247-4f22-9b35-a4a2d841cbaa"]
}
}
Parameter
Das Feld params enthält:
cacheBehavior-
Ein String, der angibt, ob der Browser für Anfragen seinen Cache verwendet. Er kann einen der folgenden Werte annehmen:
bypass: Der Browser liefert Antworten nicht aus seinem Cache; die Anfragen werden an das Netzwerk gesendet.default: Der Browser verwendet seinen Cache wie üblich.
contextsOptional-
Ein Array aus einem oder mehreren Strings mit Kontext-IDs. Jeder String identifiziert einen Top-Level-Kontext, für den das Cache-Verhalten gelten soll. Dieses Cache-Verhalten gilt auch für Anfragen aus untergeordneten Kontexten, etwa iframes. Kontext-IDs werden von Befehlen wie
browsingContext.getTreezurückgegeben.Wenn
contextsnicht angegeben wird, gilt das Cache-Verhalten für Anfragen aus allen Kontexten und ersetzt jedes für bestimmte Kontexte festgelegte Cache-Verhalten.
Rückgabewert
Das Feld result in der Antwort ist ein leeres Objekt ({}).
Fehler
invalid argument-
Wird in einem der folgenden Fälle ausgelöst:
- Ein erforderlicher Parameter fehlt oder ein Parameter hat einen ungültigen Typ.
cacheBehaviorist wederbypassnochdefault.contextsist angegeben, aber leer.- Ein in
contextsangegebener Kontext ist kein Top-Level-Kontext.
no such frame-
Es wurde kein Kontext mit einer in
contextsangegebenen ID gefunden.
Beschreibung
Ein für bestimmte Kontexte festgelegtes Cache-Verhalten hat Vorrang vor dem Cache-Verhalten, das Sie für alle Kontexte festgelegt haben.
Sie können beispielsweise den Cache für alle Kontexte umgehen und anschließend für einen Tab default festlegen, sodass nur dieser Tab den Cache verwendet.
Ein Befehl ohne contexts löscht die Einstellungen für einzelne Kontexte und wendet das angegebene Cache-Verhalten auf alle Kontexte an.
Ein für alle Kontexte festgelegtes Cache-Verhalten gilt auch für Kontexte, die nach der Verarbeitung des Befehls erstellt werden. Ein für einen Top-Level-Kontext festgelegtes Cache-Verhalten gilt auch für untergeordnete Kontexte, die später darin erstellt werden.
Das Cache-Verhalten wird von allen Sitzungen gemeinsam genutzt und bleibt wirksam, bis es durch einen weiteren network.setCacheBehavior-Befehl geändert wird oder die letzte aktive Sitzung endet.
Um zu prüfen, ob eine Antwort aus dem Cache stammt, abonnieren Sie eines der Ereignisse, die die Antwort melden (network.responseStarted, network.responseCompleted oder network.authRequired), und untersuchen Sie das Feld fromCache des Objekts response.
Beispiele
>Den Cache für alle Kontexte umgehen
Angenommen, Sie haben eine WebDriver-BiDi-Verbindung, eine aktive Sitzung und ein Abonnement für network.responseCompleted.
Angenommen, es sind außerdem zwei Tabs geöffnet, in denen jeweils die Seite angezeigt wird, die Sie testen.
Sie haben den zweiten Tab mit browsingContext.create geöffnet und dabei seine Kontext-ID erhalten.
Anschließend haben Sie die Seite im zweiten Tab mit browsingContext.navigate geladen.
Nehmen wir an, die getestete Seite ruft eine Ressource ab, die der Browser laut Server eine Stunde lang zwischenspeichern darf.
Beim zweiten Abruf liefert der Browser die Ressource aus seinem Cache. Im Ereignis network.responseCompleted ist fromCache im Objekt response auf true gesetzt.
Senden Sie die folgende Nachricht, um den Browser-Cache für alle Kontexte zu umgehen:
{
"id": 1,
"method": "network.setCacheBehavior",
"params": {
"cacheBehavior": "bypass"
}
}
Der Browser antwortet mit einem leeren result-Objekt:
{
"id": 1,
"type": "success",
"result": {}
}
Ab diesem Zeitpunkt werden Anfragen nach der Ressource aus jedem Tab an den Server gesendet. In den response-Objekten der zugehörigen network.responseCompleted-Ereignisse ist fromCache auf false gesetzt.
Das standardmäßige Cache-Verhalten wiederherstellen
Verwenden Sie dieselbe Verbindung und Sitzung wie im ersten Beispiel und senden Sie die folgende Nachricht, um das standardmäßige Cache-Verhalten des Browsers in allen Kontexten wiederherzustellen:
{
"id": 2,
"method": "network.setCacheBehavior",
"params": {
"cacheBehavior": "default"
}
}
Der Browser antwortet mit einem leeren result-Objekt:
{
"id": 2,
"type": "success",
"result": {}
}
Wenn die Ressource noch im Cache liegt und noch gültig ist, liefert der Browser sie wieder aus seinem Cache.
In diesem Fall ist im response-Objekt des network.responseCompleted-Ereignisses für die nächste Anfrage fromCache auf true gesetzt.
Den Cache für einen einzelnen Tab umgehen
Verwenden Sie dieselbe Verbindung, Sitzung und dieselben Tabs wie im ersten Beispiel und senden Sie die folgende Nachricht, um den Cache nur für den zweiten Tab zu umgehen:
{
"id": 3,
"method": "network.setCacheBehavior",
"params": {
"cacheBehavior": "bypass",
"contexts": ["5e5e96e8-5247-4f22-9b35-a4a2d841cbaa"]
}
}
Der Browser antwortet mit einem leeren result-Objekt:
{
"id": 3,
"type": "success",
"result": {}
}
Anfragen aus dem zweiten Tab umgehen nun den Cache, während Anfragen aus dem ersten Tab weiterhin aus dem Cache beantwortet werden können.
Spezifikationen
| Spezifikation |
|---|
| WebDriver BiDi> # command-network-setCacheBehavior> |
Browser-Kompatibilität
Siehe auch
- Befehl
network.setExtraHeaders - Befehl
browsingContext.reload - Befehl
session.subscribe - Leitfaden zum HTTP-Caching