缓存 API 不适用于 safari ios 模拟器和 mac

Nik*_*ili 5 javascript iphone caching ios

我正在尝试在我的index.html.

<script>
        fetch('index1.js').then(response => {
            caches.open('test-cache').then(cache => {
                cache.put('index1.js', response);
            })
        })
    </script>
Run Code Online (Sandbox Code Playgroud)

我在本地主机上有一个名为 的自定义域test-website.com。当我通过 Chrome 访问此页面时,一切都很好并index1.js存储在缓存中。现在,我打开ios Simulator并打开 Safari,然后再次运行同一个网站。我还在 mac safari 上检查了这个网站,但是在控制台中,这就是我得到的:

未处理的承诺拒绝:ReferenceError:找不到变量:缓存

问题 1)为什么会出现此错误?

问题2)我检查了兼容性:Cache Storage APICache。第一个与 兼容ios safari,第二个则不兼容。这2个有什么区别?这可能是它找不到缓存的原因吗?

问题 3) Apple 支持 Service Worker 并且它应该支持Cache API. 否则它就没有任何价值。任何想法?

Shi*_*los 3

缓存存储 API的文档说明如下:

注意:Chrome 和 Safari 仅CacheStorage通过 HTTPS 公开窗口上下文。除非配置了 SSL 证书,否则 window.caches 将是未定义的。

确保您通过 HTTPS 提供和访问网页

据我所知,浏览器仍然允许在提供页面作为测试手段caches时访问该变量,但如果您通过自定义域访问它,则此规则不应适用localhosttest-website.com