Origin-Agent-Cluster header

HTTP Origin-Agent-Cluster 响应头用于请求将关联的 Document 放置在源键代理集群中。这意味着用于评估文档的操作系统资源(例如,操作系统进程)应仅与来自相同的其他文档共享。

其效果是,资源密集型文档不太可能降低来自其他源的文档的性能。

头类型 响应头
禁止请求头

语法

http
Origin-Agent-Cluster: <boolean>

指令

<boolean>

?1 表示关联的 Document 应该放置在源键代理集群中。?1 以外的值将被忽略(例如,表示 false 的 ?0 结构化字段)。

描述

现代 Web 浏览器采用多进程架构,其中来自不同源的页面可以在不同的操作系统进程中运行。这对于性能很重要,因为它意味着资源密集型页面不会对用户打开的其他页面产生太大影响。

然而,浏览器通常不能在不同的进程中运行同站跨源页面,因为某些 DOM API 依赖于同站、跨源通信。例如,默认情况下,来自以下两个源的页面将共享相同的操作系统资源:

https://apples.example.org
https://oranges.example.org

通过设置 Origin-Agent-Cluster 标头,页面可以请求浏览器为该源分配专用资源,这些资源不与其他任何源共享。

浏览器不强制遵守该请求。如果遵守,Window.originAgentCluster 属性将返回 true,并且该窗口将无法执行以下所有依赖于同站、跨源通信的操作:

源键代理集群不应被视为安全功能:浏览器可能会因各种原因忽略请求,或者选择以不提供内存保护的方式实现它(例如,使用单独的线程而不是单独的进程)。相反,此功能是一个提示,表明如果为该源分配专用资源,用户体验将得到改善。

例如,假设您的网站包含一个源自某页面的同站跨源 iframe,该 iframe 运行一个资源密集型游戏。通过在 iframe 中的文档上设置 Origin-Agent-Cluster,您可以防止游戏影响主页面的性能。

浏览器将确保来自给定源的所有页面要么是源键的,要么不是。这意味着:

  • 如果来自某个源的第一个页面未设置标头,则该源的任何其他页面都不会是源键的,即使这些其他页面设置了标头。
  • 如果来自某个源的第一个页面设置了标头并被设置为源键,则该源的所有其他页面都将是源键的,无论它们是否请求。

为了避免这种不可预测的情况,您应该为给定源的所有页面设置此标头,或者都不设置。

示例

http
Origin-Agent-Cluster: ?1

规范

规范
HTML
# origin-agent-cluster

浏览器兼容性

另见