Origin-Agent-Cluster
Experimentell: Dies ist eine experimentelle Technologie
Überprüfen Sie die Browser-Kompatibilitätstabelle sorgfältig, bevor Sie diese produktiv verwenden.
Der HTTP Origin-Agent-Cluster
Antwort-Header wird verwendet, um zu verlangen, dass das zugehörige Document
in einem origin-gebundenen Agenten-Cluster platziert wird. Das bedeutet, dass Betriebssystemressourcen (zum Beispiel der Betriebssystemprozess), die zur Auswertung 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 anderer Origine beeinträchtigt.
Moderne Webbrowser haben eine Multiprozess-Architektur, in der Seiten von verschiedenen Originen in verschiedenen Betriebssystemprozessen laufen können. Das ist wichtig für die Leistung, da es bedeutet, dass eine ressourcenintensive Seite weniger Einfluss auf andere vom Benutzer geöffnete Seiten hat.
Allerdings können Browser nicht generell site-gleiche, cross-origin-Seiten in verschiedenen Prozessen ausführen, aufgrund bestimmter DOM-APIs, die auf site-gleiche, cross-origin-Kommunikation angewiesen sind. Zum Beispiel werden standardmäßig Seiten von den folgenden zwei Originen die gleichen Betriebssystemressourcen teilen:
https://apples.example.org https://oranges.example.org
Durch Setzen des Origin-Agent-Cluster
-Headers kann eine Seite anfordern, dass der Browser diesem Origin dedizierte Ressourcen zuweist, die nicht mit anderen Originen geteilt werden.
Der Browser ist nicht dazu verpflichtet, die Anfrage zu berücksichtigen. Wenn er es tut, gibt die Window.originAgentCluster
Eigenschaft true
zurück, und das Fenster kann folgende Dinge nicht tun, die alle auf site-gleiche, cross-origin-Kommunikation angewiesen sind:
- Verwendung von
Document.domain
. - Senden von
WebAssembly.Module
-Objekten an andere site-gleiche cross-origin-Seiten mittelspostMessage()
. - Senden von
SharedArrayBuffer
oderWebAssembly.Memory
-Objekten an andere site-gleiche cross-origin-Seiten.
Origin-gebundene Agenten-Cluster sollten nicht als Sicherheitsmerkmal betrachtet werden: Browser können die Anfrage aus verschiedenen Gründen ignorieren oder es auf eine Weise implementieren, die keinen Speicherschutz bietet (zum Beispiel durch Verwendung separater Threads statt separater Prozesse). Stattdessen ist dieses Feature ein Hinweis darauf, dass die Benutzererfahrung verbessert wird, wenn diesem Origin dedizierte Ressourcen zugewiesen werden.
Zum Beispiel, nehmen wir an, Ihre Seite enthält eine Seite von einem Origin, das ein site-gleiches, cross-origin-iframe einbettet, das ein ressourcenintensives Spiel ausführt. Durch Setzen von Origin-Agent-Cluster
auf das Dokument im iframe kann verhindert werden, dass das Spiel die Leistung der Hauptseite beeinflusst.
Der Browser wird sicherstellen, dass alle Seiten von einem gegebenen Origin entweder origin-gebunden sind oder nicht. Das bedeutet:
- Wenn die erste Seite von einem Origin den Header nicht setzt, dann werden auch keine anderen Seiten von diesem Origin origin-gebunden sein, selbst wenn diese anderen Seiten den Header setzen.
- Wenn die erste Seite von einem Origin den Header setzt und origin-gebunden wird, dann werden alle anderen Seiten von diesem Origin origin-gebunden, unabhängig davon, ob sie es verlangen 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.
Headertyp | Antwort-Header |
---|---|
Verbotener Headername | Nein |
Syntax
Origin-Agent-Cluster: <boolean>
Direktiven
Beispiele
Origin-Agent-Cluster: ?1
Spezifikationen
Specification |
---|
HTML Standard # origin-agent-cluster |
Browser-Kompatibilität
BCD tables only load in the browser