如何配置 Polymer 的 Platinum-sw-cache 或 Platinum-sw-fetch 以缓存除 /_api 之外的所有 URL 路径,它是 Hoodie 的 API 的 URL?我已经配置了一个 Platinum-sw-fetch 元素来处理 /_api 路径,然后配置了 Platinum-sw-cache 来处理其余路径,如下所示:
<platinum-sw-register auto-register
clients-claim
skip-waiting
on-service-worker-installed="displayInstalledToast">
<platinum-sw-import-script href="custom-fetch-handler.js"></platinum-sw-import-script>
<platinum-sw-fetch handler="HoodieAPIFetchHandler"
path="/_api(.*)"></platinum-sw-fetch>
<platinum-sw-cache default-cache-strategy="networkFirst"
precache-file="precache.json"/>
</platinum-sw-cache>
</platinum-sw-register>
custom-fetch-handler.js 包含以下内容。它的目的只是以服务工作者未处理请求时浏览器的方式返回请求的结果。
var HoodieAPIFetchHandler = function(request, values, options){
return fetch(request);
}
似乎无法正常工作的是,在用户 1 登录后,然后退出,然后用户 2 登录,然后在 Chrome 开发工具的网络选项卡中,我可以看到 Hoodie 定期继续向两个用户发出请求API 端点如下所示:
http://localhost:3000/_api/?hoodieId=uw9rl3p
http://localhost:3000/_api/?hoodieId=noaothq
相反,它应该只向其中一个 API 端点发出请求。在“网络”选项卡中,这些 URL 中的每一个连续出现两次,并且在“大小”列中,第一个请求显示“(来自 ServiceWorker)”,第二个请求以字节表示响应大小,以防万一。
另一个似乎相关的问题是,当我以用户 2 身份登录并提交表单时,应用程序会写入服务器端用户 1 的数据库。这让我认为问题是由于应用程序无法绕过 /_api 路由的缓存。
我是否应该在一个 Platinum-sw-register 元素中同时使用 Platinum-sw-cache 和 Platinum-sw-fetch,因为文档声明它们是彼此的替代品?