Origin-Agent-Cluster
Der HTTP Origin-Agent-Cluster
Antwort-Header wird verwendet, um anzufordern, dass das zugehörige Document
in einem herkunftsschlüsselbasierten Agenten-Cluster platziert wird. Dies bedeutet, dass Betriebssystemressourcen (zum Beispiel der Betriebssystemprozess), die zur Ausführung des Dokuments verwendet werden, nur mit anderen Dokumenten derselben Herkunft geteilt werden sollten.
Der Effekt davon ist, dass ein ressourcenintensives Dokument weniger wahrscheinlich die Leistung von Dokumenten anderer Herkünfte beeinträchtigt.
Headertyp | Antwort-Header |
---|---|
Verbotener Anforderungs-Header | Nein |
Syntax
Origin-Agent-Cluster: <boolean>
Direktiven
Beschreibung
Moderne Webbrowser haben eine Mehrprozessarchitektur, in der Seiten von verschiedenen Herkünften in unterschiedlichen Betriebssystemprozessen ausgeführt werden können. Dies ist wichtig für die Leistung, da es bedeutet, dass eine ressourcenintensive Seite nicht so stark die Auswirkungen auf andere Seiten hat, die der Benutzer geöffnet hat.
Allerdings können Browser in der Regel nicht gleichseithafte, cross-origin Seiten in unterschiedlichen Prozessen ausführen, da bestimmte DOM-APIs von einer gleichseithaften, Cross-Origin-Kommunikation abhängen. Zum Beispiel würden Seiten der folgenden zwei Herkünfte standardmäßig dieselben Betriebssystemressourcen teilen:
https://apples.example.org https://oranges.example.org
Durch das Setzen des Origin-Agent-Cluster
Headers kann eine Seite anfordern, dass der Browser dedizierte Ressourcen für diese Herkunft bereitstellt, die nicht mit anderen Herkünften geteilt werden.
Der Browser ist nicht verpflichtet, die Anforderung zu erfüllen. Wenn er dies tut, gibt die Window.originAgentCluster
Eigenschaft true
zurück, und das Fenster ist nicht in der Lage, folgende Dinge zu tun, die alle von gleichseithafter, Cross-Origin-Kommunikation abhängen:
- Verwendung von
Document.domain
. WebAssembly.Module
Objekte an andere gleichseithafte Cross-Origin-Seiten mitpostMessage()
senden.- Senden von
SharedArrayBuffer
oderWebAssembly.Memory
Objekten an andere gleichseithafte Cross-Origin-Seiten.
Agenten-Cluster, die nach Herkunftsschlüsseln organisiert sind, sollten nicht als Sicherheitsfunktion betrachtet werden: Browser können die Anforderung aus verschiedenen Gründen ignorieren oder sich dafür entscheiden, sie auf eine Weise zu implementieren, die keinen Speicherschutz bietet (z. B. durch die Verwendung separater Threads anstelle separater Prozesse). Stattdessen ist dieses Feature ein Hinweis darauf, dass die Benutzererfahrung verbessert würde, wenn dieser Herkunft dedizierte Ressourcen zugewiesen würden.
Angenommen, Ihre Website enthält eine Seite von einer Herkunft, die ein gleichseithaftes, Cross-Origin-iframe einbettet, welches ein ressourcenintensives Spiel ausführt. Durch das Setzen von Origin-Agent-Cluster
auf dem Dokument im iframe können Sie verhindern, dass das Spiel die Leistung der Hauptseite beeinträchtigt.
Der Browser stellt sicher, dass alle Seiten einer bestimmten Herkunft entweder herkunftsschlüsselbasiert sind oder nicht. Das bedeutet:
- Wenn die erste Seite einer Herkunft den Header nicht setzt, dann werden keine anderen Seiten dieser Herkunft herkunftsschlüsselbasiert sein, selbst wenn diese anderen Seiten den Header setzen.
- Wenn die erste Seite einer Herkunft den Header setzt und herkunftsschlüsselbasiert wird, dann werden alle anderen Seiten dieser Herkunft herkunftsschlüsselbasiert sein, unabhängig davon, ob sie dies anfordern oder nicht.
Um solche unvorhersehbaren Situationen zu vermeiden, sollten Sie diesen Header für alle Seiten einer gegebenen Herkunft setzen oder für keine von ihnen.
Beispiele
Origin-Agent-Cluster: ?1
Spezifikationen
Specification |
---|
HTML # origin-agent-cluster |
Browser-Kompatibilität
Siehe auch
Window.originAgentCluster
- Agenten-Cluster und Speicherfreigabe im JavaScript-Ausführungsmodell
- Anfordern der Leistungsisolierung mit dem Origin-Agent-Cluster-Header auf web.dev