如何使用Workbox预先缓存特定于用户的内容?

时间:2018-03-27 10:36:10

标签: progressive-web-apps sw-precache workbox

我有一个会员网站,我想只为登录用户创建缓存文件。如何处理Workbox

解决方案:我发现工作箱在这种情况下具有非常好的功能。可以使用cacheable response。所以从服务器我可以发送如下的特定标头值:

response.setHeader('X-Is-Cacheable', 'true')

在我的服务工作者中,我可以检查该标头值是否匹配,如下所示:

workbox.routing.registerRoute(
  new RegExp('/path/to/api/'),
  workbox.strategies.staleWhileRevalidate({
    cacheName: 'api-cache',
    plugins: [
      new workbox.cacheableResponse.Plugin({
        headers: {
          'X-Is-Cacheable': 'true',
        },
      })
    ]
  })
);

因此,如果服务器将X-Is-Cacheable设置为true(我仅为登录用户设置它true),那么将为该用户缓存所有数据。

1 个答案:

答案 0 :(得分:0)

我认为您必须编写自己的处理程序来检查用户是否已登录,然后缓存响应

请参阅:Handling a Route with a Custom Callback