Origin-Agent-Cluster header
HTTP Origin-Agent-Cluster 響應頭用於請求將關聯的 Document 放置在源鍵代理叢集中。這意味著用於評估文件的作業系統資源(例如,作業系統程序)應僅與來自相同源的其他文件共享。
其效果是,資源密集型文件不太可能降低來自其他源的文件的效能。
語法
http
Origin-Agent-Cluster: <boolean>
指令
描述
現代 Web 瀏覽器採用多程序架構,其中來自不同源的頁面可以在不同的作業系統程序中執行。這對於效能很重要,因為它意味著資源密集型頁面不會對使用者開啟的其他頁面產生太大影響。
然而,瀏覽器通常不能在不同的程序中執行同站、跨源頁面,因為某些 DOM API 依賴於同站、跨源通訊。例如,預設情況下,來自以下兩個源的頁面將共享相同的作業系統資源:
https://apples.example.org https://oranges.example.org
透過設定 Origin-Agent-Cluster 標頭,頁面可以請求瀏覽器為該源分配專用資源,這些資源不與其他任何源共享。
瀏覽器不強制遵守該請求。如果遵守,Window.originAgentCluster 屬性將返回 true,並且該視窗將無法執行以下所有依賴於同站、跨源通訊的操作:
- 使用
Document.domain。 - 使用
postMessage()將WebAssembly.Module物件傳送到其他同站跨源頁面。 - 將
SharedArrayBuffer或WebAssembly.Memory物件傳送到其他同站跨源頁面。
源鍵代理叢集不應被視為安全功能:瀏覽器可能會因各種原因忽略請求,或者選擇以不提供記憶體保護的方式實現它(例如,使用單獨的執行緒而不是單獨的程序)。相反,此功能是一個提示,表明如果為該源分配專用資源,使用者體驗將得到改善。
例如,假設您的網站包含一個源自某頁面的同站跨源 iframe,該 iframe 執行一個資源密集型遊戲。透過在 iframe 中的文件上設定 Origin-Agent-Cluster,您可以防止遊戲影響主頁面的效能。
瀏覽器將確保來自給定源的所有頁面要麼是源鍵的,要麼不是。這意味著:
- 如果來自某個源的第一個頁面未設定標頭,則該源的任何其他頁面都不會是源鍵的,即使這些其他頁面設定了標頭。
- 如果來自某個源的第一個頁面設定了標頭並被設定為源鍵,則該源的所有其他頁面都將是源鍵的,無論它們是否請求。
為了避免這種不可預測的情況,您應該為給定源的所有頁面設定此標頭,或者都不設定。
示例
http
Origin-Agent-Cluster: ?1
規範
| 規範 |
|---|
| HTML # origin-agent-cluster |
瀏覽器相容性
載入中…
另見
Window.originAgentCluster- JavaScript 執行模型中的代理叢集和記憶體共享
- web.dev 上使用 Origin-Agent-Cluster 標頭請求效能隔離