Origin-Agent-Cluster header
Der HTTP Origin-Agent-Cluster
Response-Header wird verwendet, um anzufordern, dass das dazugehörige Document
in einem origin-codierten Agent-Cluster platziert werden soll. Das bedeutet, dass Betriebssystemressourcen (z. B. der Prozess des Betriebssystems), die zur Evaluierung des Dokuments verwendet werden, nur mit anderen Dokumenten aus dem gleichen Origin geteilt werden sollten.
Der Effekt davon ist, dass ein ressourcenintensives Dokument weniger wahrscheinlich die Leistung von Dokumenten aus anderen Origins beeinträchtigen wird.
Header-Typ | Response-Header |
---|---|
Verbotener Request-Header | Nein |
Syntax
Origin-Agent-Cluster: <boolean>
Direktiven
Beschreibung
Moderne Webbrowser haben eine Mehrprozessarchitektur, in der Seiten von unterschiedlichen Origins in verschiedenen Betriebssystemprozessen ausgeführt werden können. Dies ist wichtig für die Leistung, da es bedeutet, dass eine ressourcenintensive Seite nicht so stark auf andere Seiten einwirken wird, die der Benutzer geöffnet hat.
Allerdings können Browser im Allgemeinen keine same-site, cross-origin Seiten in unterschiedlichen Prozessen ausführen, aufgrund bestimmter DOM-APIs, die von same-site, cross-origin Kommunikation abhängen. Zum Beispiel teilen Seiten der folgenden zwei Origins standardmäßig die gleichen Betriebssystemressourcen:
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 dieses Origin zuweist, die nicht mit anderen Origins geteilt werden.
Der Browser ist nicht verpflichtet, der Anforderung nachzukommen. Wenn er dies tut, gibt die Window.originAgentCluster
Eigenschaft true
zurück, und das Fenster kann die folgenden Dinge nicht mehr tun, die alle auf same-site, cross-origin Kommunikation angewiesen sind:
- Verwenden von
Document.domain
. - Senden von
WebAssembly.Module
-Objekten an andere same-site, cross-origin Seiten mittelspostMessage()
. - Senden von
SharedArrayBuffer
oderWebAssembly.Memory
-Objekten an andere same-site, cross-origin Seiten.
Origin-codierte Agent-Cluster sollten nicht als Sicherheitsfunktion angesehen werden: Browser können die Anfrage aus verschiedenen Gründen ignorieren oder sie in einer Weise implementieren, die keinen Speicherschutz bietet (z. B. durch die Verwendung separater Threads anstelle separater Prozesse). Stattdessen ist diese Funktion ein Hinweis, dass die Benutzererfahrung verbessert würde, wenn diesem Origin dedizierte Ressourcen zugewiesen würden.
Angenommen, Ihre Website enthält eine Seite von einem Origin, die ein same-site, cross-origin iframe einbettet, auf dem ein ressourcenintensives Spiel läuft. Durch das Setzen von Origin-Agent-Cluster
für das Dokument im iframe können Sie verhindern, dass das Spiel die Leistung der Hauptseite beeinträchtigt.
Der Browser stellt sicher, dass alle Seiten von einem gegebenen Origin entweder origin-codiert sind oder nicht. Das bedeutet:
- Wenn die erste Seite eines Origins den Header nicht setzt, werden keine weiteren Seiten dieses Origins origin-codiert, selbst wenn diese anderen Seiten den Header setzen.
- Wenn die erste Seite eines Origins den Header setzt und origin-codiert wird, dann werden alle anderen Seiten dieses Origins origin-codiert, unabhängig davon, ob sie darum bitten oder nicht.
Um diese Art von unvorhersehbaren Situationen zu vermeiden, sollten Sie diesen Header für alle Seiten von einem gegebenen Origin 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 Speichernutzung im JavaScript-Ausführungsmodell
- Anfordern von Leistungsisolierung mit dem Origin-Agent-Cluster-Header auf web.dev