Permissions-Policy: deferred-fetch 指令

可用性有限

此特性不是基线特性,因为它在一些最广泛使用的浏览器中不起作用。

实验性: 这是一项实验性技术
在生产中使用此技术之前,请仔细检查浏览器兼容性表格

deferred-fetch Permissions-Policy 指令是 fetchLater() API 的一部分。

此指令与 deferred-fetch-minimal 一起,决定了总共 640KiB 的配额限制如何在顶级源及其跨源子帧之间分配。默认情况下,顶级源被授予 512KiB,每个跨源子帧从剩余的 128KiB 中被授予 8KiB。deferred-fetch 权限策略可以允许子帧源从顶级的 512KiB 配额中获得更大的 64KiB 配额,而不是它们默认将获得的 8KiB 最小配额。

有关更多详细信息和示例,请参阅 fetchLater() 配额

语法

http
Permissions-policy: deferred-fetch=(self)
Permissions-policy: deferred-fetch=(self <url-list>)
Permissions-policy: deferred-fetch=(<url-list>)
<url-list>

以空格分隔的源列表(每个源都用引号括起来),这些源被授予从父级主配额中获取的 64KiB 更高配额。64KiB 配额在子帧创建时获取。

一个跨源子帧可以将其整个配额委托给其一个跨源子帧后代授予 deferred-fetch。这仅在当前未占用任何配额时才有效。

权限策略检查与配额检查无法区分。如果配额实际超出,或者通过权限策略限制了该源的配额,调用 fetchLater() 都将抛出 QuotaExceededError

默认策略

deferred-fetch 的默认允许列表是 self

示例

有关更多示例,请参阅 fetchLater() 配额

使用最小配额

http
Permissions-Policy: deferred-fetch=(self "https://b.com")
  1. b.com 的一个子帧在创建时从顶级的 512KiB 限制中收到 64KiB。
  2. c.com 的一个子帧未列出,因此在创建时从 128KiB 共享限制中收到 8KiB。
  3. 另外 15 个不同源的子帧在创建时将收到 8KiB(类似于 c.com)。
  4. 下一个子帧将不被授予任何配额。
  5. 如果其中一个子帧被移除,其延迟获取将被发送。
  6. 下一个子帧将收到 8KiB 配额,因为再次有可用配额。

完全撤销最小配额

http
Permissions-Policy: deferred-fetch=(self "https://b.com")
Permissions-Policy: deferred-fetch-minimal=()
  1. b.com 的一个子帧在创建时收到 64KiB。
  2. c.com 的一个子帧在创建时未收到任何配额。
  3. 顶级文档及其同源后代最多可以使用完整的 640KiB,但如果创建了 b.com 子帧,则会减少到 574KiB。

规范

规范
Fetch
# available-deferred-fetch-quota

浏览器兼容性

另见