我正在尝试使用 ServiceWorker 缓存 iframe 的请求(使用 sw-toolbox.js)。
但无论我如何尝试,正如 Chrome Network Tab 告诉我的那样,ServiceWorker 永远不会提供文件。
这是我的 service-worker.js:
'use strict';
importScripts('./build/sw-toolbox.js');
self.toolbox.options.cache = {
name: 'ionic-cache'
};
var static_urls = [
'https://quiqqer.local/test?app=1',
'https://quiqqer.local/calendar?app=1'
];
self.toolbox.precache(static_urls);
self.toolbox.router.any('/(.*)', self.toolbox.cacheFirst, {origin: 'https://quiqqer.local'});
self.addEventListener('install', function (event)
{
self.skipWaiting();
});
self.toolbox.router.default = self.toolbox.cacheFirst;
self.toolbox.precache() 函数正确地向我的 static_url 发出请求,正如我在“网络”选项卡中看到的那样。
但是所有的请求都来自 iframe(https://quiqer.local/)似乎没有通过 ServiceWorker 路由。
我究竟做错了什么?或者是否可以缓存 iframe 请求?
使用 Linux 在 Chromium 上运行。
提前致谢
可能有一个官方 HTML 规范提供了更规范的答案,但我只是从MDN 文档:
HTML 元素代表一个嵌套的浏览上下文,
有效地将另一个 HTML 页面嵌入到当前页面中。 ...
每个浏览上下文都有自己的会话历史记录和活动文档。
包含嵌入内容的浏览上下文称为
父浏览上下文。
你可以想想发生了什么<iframe>
,包括加载请求<iframe>
's src
本身,相当于如果那样会发生什么<iframe>
已加载到单独的选项卡中。除非控制父浏览上下文(即您的顶级页面)的服务工作线程也恰好包含<iframe>
's src
在其范围内,该服务工作人员将无法控制最初加载<iframe>
或提出的要求<iframe>
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)