index.html
中使用以下代码片段。<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 模拟器
并在其中运行 Safari,然后再次运行相同的网站。我还在 Mac Safari 上检查了这个网站,但是在控制台中,我得到了以下内容:
Unhandled Promise Rejection: ReferenceError: Can't find variable: caches
问题 1) 我为什么会得到这个错误?
问题 2) 我已经检查了兼容性:Cache Storage API 和 Cache。第一个与 iOS Safari
兼容,第二个不兼容。这两者之间有什么区别?这可能是无法找到缓存的原因吗?
问题 3) 苹果支持 Service Worker,并且应该支持 Cache API
。否则就没有价值了。有什么想法吗?
caches.open
但是在全局范围内caches
未定义。可能是某种竞争条件? - Robert Daly