【发布时间】:2020-07-11 18:22:32
【问题描述】:
我正在尝试在我的index.html 中使用以下 sn-p 代码。
<script>
fetch('index1.js').then(response => {
caches.open('test-cache').then(cache => {
cache.put('index1.js', response);
})
})
</script>
我在本地主机上有一个名为test-website.com 的自定义域。当我通过 chrome 访问这个页面时,一切都很好,index1.js 被存储在缓存中。现在,我打开 ios Simulator 并在那里打开 safari 并再次运行同一个网站。我也在 mac safari 上查看了这个网站,但在控制台中,这就是我得到的:
未处理的承诺拒绝:ReferenceError:找不到变量: 缓存
问题 1) 为什么会出现此错误?
问题 2) 我检查了兼容性:Cache Storage API 和 Cache。第一个与 ios safari 兼容,第二个不兼容。这2个有什么区别?这可能是它找不到缓存的原因吗?
问题 3) Apple 支持 service worker,它应该支持Cache API。否则它没有价值。有什么想法吗?
【问题讨论】:
-
我在 prod 上遇到了同样的问题,当触发 SW 的安装事件时,我触发了
caches.open但caches在全局范围内未定义。一些可能的竞争条件?
标签: javascript ios iphone caching