聚合物服务工作者不缓存

时间:2016-04-09 03:39:04

标签: polymer polymer-1.0 service-worker

我有这个自定义元素,用url获取facebook个人资料图片(非常小的尺寸)。我正在使用服务工作者来拦截呼叫并缓存它。但是,它似乎没有效果。每次刷新页面时,呼出都会通过网络传出。此外,本地存储中的开发工具中没有任何内容。我也尝试了cacheOnly,它仍然向网络调用了网址,因此我知道服务工作者platinum-sw-fetch无效。

有关我做错的任何建议吗?如果它确实有效,我不应该在本地存储中看到开发工具的东西吗?我确实在开发工具中看到了服务工作者本身。

                          

<platinum-sw-register auto-register
                      clients-claim
                      skip-waiting
                      base-uri="../bower_components/platinum-sw/bootstrap">
  <platinum-sw-fetch
    origin="https://z-1-scontent.xx.fbcdn.net"
    path="/hprofile(.*)"
    handler="cacheFirst">
  </platinum-sw-fetch>
</platinum-sw-register>

1 个答案:

答案 0 :(得分:0)

这不是聚合物(或platinum-sw)问题,这是由于服务工作者的运作方式。

服务工作者仅为其自己的范围提供获取请求:具体而言,在与服务工作者文件相同的域上,以及在该目录中或更低的目录中。因此,如果您使用sw文件注册它:

https://example.com/stuff/service-worker.js

它只会拦截以https://example.com/stuff/

开头的抓取请求

http://www.html5rocks.com/en/tutorials/service-worker/introduction/#toc-before

(请参阅“如何注册和安装服务工作者”一节。)

如果你想做这样的事情,你需要通过自己的服务器代理请求。