Permissions-Policy:deferred-fetch 指令
Limited availability
This feature is not Baseline because it does not work in some of the most widely-used browsers.
HTTP Permissions-Policy 标头的 deferred-fetch 指令属于 Fetch 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")
b.com的子框架在创建时从顶级的 512KiB 配额限制中获得 64KiB。c.com的子框架未在列表中,因此在创建时从 128KiB 共享配额限制中获得 8KiB。- 另外 15 个不同来源的子框架在创建时会获得 8KiB(类似于
c.com)。 - 下一个子框架将不会被授予任何配额。
- 如果其中一个子框架被移除,其延迟获取(fetch)将被发送。
- 下一个子框架将获得 8KiB 配额,因为又有配额可用了。
完全撤销最小配额
http
Permissions-Policy: deferred-fetch=(self "https://b.com")
Permissions-Policy: deferred-fetch-minimal=()
b.com的子框架在创建时获得 64KiB。c.com的子框架在创建时不会获得任何配额。- 顶级文档及其同源后代可以使用最多 640KiB,但如果创建了
b.com子框架,则会减少到 574KiB。
规范
| Specification |
|---|
| Fetch> # available-deferred-fetch-quota> |