我试图用一个服务人员使用Workbox制作一个非常基本的PWA,但是我有一个问题。我正在使用命令行界面来生成服务工作人员,一切正常,完美的亮点,但我不能将我的index.html添加到运行时缓存中。我必须将其添加到全局模式,以便我的网站在离线模式下工作,但当我更新index.html文件时,除非我清除缓存,否则不会更新。我想要和我的js和css一样的东西。当我升级这些文件时,它们会更新。这是我的工作箱配置文件:
module.exports = {
globDirectory: "./",
globPatterns: ["**/*.{html,json}"],
swDest: "./serviceworker.js",
// Define runtime caching rules.
runtimeCaching: [
{
// Match any request that ends with .png, .jpg, .jpeg or .svg. urlPattern: /\.(?:png|jpg|jpeg|svg)$/,
urlPattern: /\.(?:png|jpg|jpeg|svg)$/,
// Apply a network-first strategy.
handler: "NetworkFirst",
options: {
// Use a custom cache name.
cacheName: "images",
},
},
{
urlPattern: /\.(?:js|css)$/,
handler: "NetworkFirst",
options: {
cacheName: "main",
},
},
],
};
我对你的问题的解释是,你不想使用预切,因为你更喜欢没有缓存优先的超文本标记语言。如果是这样,那很好——在这种情况下,你实际上不需要使用workbox-cli
。
相反,如果您只是使用运行时缓存,您可以完全避免使用Workbox构建工具,而只是部署一个安装默认NetworkFirst
路由的Service Worker文件:
importScripts('https://storage.googleapis.com/workbox-cdn/releases/6.1.1/workbox-sw.js');
const strategy = new workbox.strategies.NetworkFirst();
workbox.routing.setDefaultHandler(strategy);
// Ensure that our cache is pre-populated at install time,
// which will help with offline checks.
const urls = [
'/',
// Add any other URLs that you want to ensure are cached here.
];
workbox.recipes.warmStrategyCache({urls, strategy});
workbox.core.clientsClaim();
一旦注册了服务辅助角色,所有响应都将在运行时自动缓存,如果您曾经脱机,以前缓存的响应将被用作回退(假设以前有一个请求填充了缓存)。
如果您愿意,可以将此与调用“workbox”混合使用。食谱。温热疗法
我试图将PWA添加到项目中,但未成功。服务工作者不会缓存服务器请求。请求地址未添加到缓存存储中。因此,脱机模式不起作用。 项目配置: vue水疗中心 使用axios库向服务器发出的请求 服务器响应不包含缓存控制标头 pwa是使用标准vue插件实现的:vue/cli插件pwa vue中的PWA配置。配置。js: 还有这个:浏览器中的开发者控制台-
我创建了react应用程序,它使用股票服务人员缓存文件。我希望该应用程序是一个可下载的PWA,但每当我更新(与heroku) 我是否错过了文档中的一些配置,以便在其为PWA时启用自动更新?或者我可以做些什么来在更新时强制刷新。(我读过这是一个糟糕的UI,但我对此没有意见) 注意:从PC上的浏览器查看时,它会按预期工作。(选项卡全部关闭时更新)
在Chrome中,我的react service worker(使用CRA创建)被永久缓存并服务于旧版本。硬重新加载不会改变任何东西。如果我在开发工具中手动选择bypass for network来修复问题,但显然这不是一个适用于客户端的解决方案。我们的应用程序由Apache提供。基本上,我想知道在这种情况下指定
我使用带有sw工具箱库的service worker。我的PWA缓存除API查询(图像、css、js、html)之外的所有内容。但是如果有一天某些文件会被更改呢。或者如果服务人员。js将被更改。应用程序应该如何知道文件中的更改? 我的服务人员。js: 我不知道在PWA中更新缓存的常用方法是什么。也许PWA应该在后台发送AJAX请求并检查UI版本?
我使用Android架构组件(ViewModel,LiveData),并使用Room从使用存储库的本地Sqlite数据库中获取数据。最外面的观察者很好,问题只出在内部观察者身上。 参见代码: 我用命名和匿名观察者都试过了。我不明白这里有什么问题。 有时它会插入NullPointerExceptions。有时无法更改区域设置。 还有一个问题是,我不确定应该在片段中使用哪一个作为观察者的所有者,或(我