我有一个利用服务人员的PWA。它可以预缓存我认为非常有用的URL和资产,特别是因为我已经将其转换为TWA并将其发布在Play商店中。
它连接的MySQL数据库大约只有6mb,很轻。
是否可以使用Service Worker预缓存整个数据库,还是只能预缓存URL /静态资产?
答案 0 :(得分:1)
服务人员可以缓存/预缓存给定请求的响应。
假设您在服务器上拥有Library
个MySQL数据库,其中包含诸如Books
和Authors
之类的表。为了使用服务工作者对其进行缓存,您可以创建一个服务,该服务以JSON格式返回图书和作者,例如GET https://you-api.com/library
。然后,根据您的缓存策略,您可以:
https://you-api.com/library
URL添加到服务工作者的install
步骤中使用的预缓存资源列表中,或者fetch
请求相对应的服务工作者的https://you-api.com/library
事件。无论哪种情况,都可以将结果存储在Cache
或IndexedDB
中。不过,我更喜欢IndexedDB
,因为稍后我们需要能够方便地使用此数据。如果您决定单独存储MySQL表记录,那么使用IndexedDB可以创建多个存储。
好的,我们已经创建并填充了本地数据库。现在呢?
您可以:
Library
数据库,或让我们关注第二个选项。您的应用很可能使用某些服务从远程数据库中获取数据。假设https://you-api.com/library/book/<id>
服务用于按ID检索图书。为什么不利用我们的书在本地缓存这一事实呢?最直接的方法是:
Library
数据库中查询该特定图书,并以与远程服务相同的格式返回该图书一些其他注意事项和特殊情况: