Javascript 服务人员可以预缓存MySQL数据库吗?
我有一个使用服务人员的PWA。它可以预缓存我觉得非常有用的URL和资产,特别是因为我已经将其转换为TWA并在Play Store上发布 它所连接的MySQL数据库相当轻,大约为6mbJavascript 服务人员可以预缓存MySQL数据库吗?,javascript,mysql,service-worker,Javascript,Mysql,Service Worker,我有一个使用服务人员的PWA。它可以预缓存我觉得非常有用的URL和资产,特别是因为我已经将其转换为TWA并在Play Store上发布 它所连接的MySQL数据库相当轻,大约为6mb 是否可以使用我的服务人员预缓存整个数据库,还是只能预缓存URL/静态资产?服务人员可以缓存/预缓存给定请求的响应。 假设服务器上有LibraryMySQL数据库,包含Books和Authors等表。为了使用服务工作者缓存它,您可以创建一个以JSON格式返回书籍和作者的服务,例如GEThttps://you-api.
是否可以使用我的服务人员预缓存整个数据库,还是只能预缓存URL/静态资产?服务人员可以缓存/预缓存给定请求的响应。 假设服务器上有
Library
MySQL数据库,包含Books
和Authors
等表。为了使用服务工作者缓存它,您可以创建一个以JSON格式返回书籍和作者的服务,例如GEThttps://you-api.com/library
。然后,根据您的缓存策略,您可以:
- 添加
URL,指向服务人员的https://you-api.com/library
步骤中使用的预缓存资源列表,或install
- 处理与
请求https://you-api.com/library
缓存
或索引数据库
中。不过我更喜欢IndexedDB
,因为我们以后需要能够方便地处理这些数据。如果决定单独存储MySQL表记录,可以使用IndexedDB创建多个存储
好的,我们已经创建并填充了本地数据库。现在怎么办
你可以:
- 直接从页面查询本地
数据库,或库
- 继续使用服务人员
https://you-api.com/library/book/
服务用于按id检索图书。为什么不利用我们在本地缓存图书这一事实呢?最直接的方法是:
- 使用上面的服务工作者截获与上面的URL对应的获取请求
- 从请求URL读取表名和图书id
- 查询本地
数据库中的特定图书,并以与远程服务相同的格式返回该图书图书馆
- 处理本地数据库不存在的情况
- 决定何时以及如何更新数据库
- 处理模式更改
- 可以选择采用网络优先策略。尝试首先从远程服务检索数据库记录,并在网络不可用时回退到缓存版本