2016-06-28 41 views
0

正在开发构建渐进式Web应用程序。我们面对服务人员的怪异行为。服务人员正在对资源进行多次请求以缓存资源

1. Clear cache and unregister service worker 
2. Go to www.example.com 
3. Examine the network calls for resources (JS/CSS) 

预期结果: 只有一个网络请求应该去一个资源。

实际结果: 两个网络请求被每个资源[SCREENSHOT[1]

+0

很难说,没有看到y我们的服务人员代码。 – Kinlan

+0

我正在使用sw-precache来获取静态资源,并且还使用动态工具箱。 Paul,这是因为sw并行注册并为预先缓存的项目分别发出网络请求?如果你愿意,我可以与你分享我的代码。 –

回答

5

你在sw-precache看到获取的资源来填充它的缓存是什么制成。这种情况独立于受控页面的初始请求。这是一个相当常见的模式,无论您是否使用sw-precache。 (你可以注意到sw-precache现在会在缓存请求中追加一个cache-busting头文件,这意味着它们会被缓存,我们将总是违背网络而不是HTTP浏览器缓存,即将推出的sw-precache的4.0.0版本现在可以通过master分支使用,它有一个新的dontCacheBustUrlsMatching option,它允许你选择退出资源缓存清除你明确地通过文件名进行版本控制,使用这个选项意味着额外的sw-precache请求来填充它的缓存将通过HTTP浏览器缓存实现,跳过网络。)