我需要一个网站来缓存数据。并设置了缓存存储(通过服务工作者)和应用程序缓存(通过html清单属性)。他们工作。
我的问题是:如果浏览器上存在服务器工作者支持,如何忽略应用程序缓存?
互联网上的一些内容表明,如果缓存存储有效,Chrome会忽略应用缓存。我发现它没有。 Mac OS X上的Chrome 63 。
一个选项似乎是根据浏览器和操作系统类型在服务器上创建一个动态页面(保持清单属性与否)。有没有更好的办法?谢谢
答案 0 :(得分:0)
服务工作程序激活后,其控制的客户端页面的任何现有应用程序缓存实例都将自动取消关联。 service worker specification中的激活算法的步骤6中描述了此行为:
对于创建URL匹配的每个服务工作者客户端客户端 注册范围网址:
如果客户端是窗口客户端,则取消关联客户端的责任 来自其应用程序缓存的文档,如果有的话。
- 醇>
否则,如果客户端是共享工作者客户端,则取消客户端的全局关联 来自其应用程序缓存的对象,如果它有一个。
如果您没有看到这种行为,并且您确定服务工作者已激活并且可以控制给定的客户端窗口,那么这听起来像浏览器实现中的错误。您应该在相应浏览器的错误跟踪器上跟进有关复制步骤的详细信息。