Pwa错误地考虑api缓存而不是db?

问题描述 投票:1回答:1

我建立一个像应用程序的特定书籍阅读器

主页调用api / booksList并接收包含每本书信息的json数组,如:

[ {  id: server_db_id,  title: "title test",  sum: 10 , date: ... }
]

ans在请求后缓存,所以我不将图书列表保存到indexedDB,localStorage或其他存储中。如果我需要一本特定的书,我只需再次调用api书列表并过滤它。这是糟糕的设计吗? (书将超过200项)

当用户打开书时,它会调用/api/book/book_id并将其缓存,打开的书籍响应是本书行的json列表,例如:

[
 {  
  id: ...
  content: "This is line...lore ipsum..."
  ....
 }
]

我将api响应放在vue数据变量中,并正确呈现组件

我没有使用任何类型的处理程序来保持离线。要检测用户是否已经打开过这本书,我只需要调用api,检查错误是否发生或者响应机构是否有内容。

这是一个错误的,坏的或愚蠢的决定吗?这是否会达到配额限制api或其他类型的限制? pwa的“众神”会向我伸出手指说:WAAAT。 (我最初没有使用indexedDB,因为它需要一些模型处理,如果可能的话我想让事情变得更容易)

vue.js vuex progressive-web-apps pwa
1个回答
2
投票

我的自我只是研究这个并得出结论,目前我将采用这种方法,在那里我使用cache作为资产,js, css, html等基于他们的匹配路线。

然后谈到数据,例如json请求等。最好将它们存储在indexedDB(或等效的)中,这实际上并不需要模型或模式。

请参阅Jake Archibald的IndexedDB-Promise库https://github.com/jakearchibald/idb,它非常简单。

虽然杰克和艾迪都说这不是事实上的规则,但你最终可以决定什么对你最好。

阅读本文以获得更好的说明

它帮助我更好地决定如何前进。

建议还

这里的导游非常擅长带您完成所需的一切。

祝你的PWA好运

随机思考(编辑)

让我质疑这一点的一件事是基于我看到的一些示例和指南,数据存储以更临时的方式处理。例如,如果PWA调出一个API,我可以通过两种方法管理应用程序或服务工作者中的缓存数据,例如:如果您在应用程序中调用get JSON失败,它可以恢复为indexedDB中的数据,希望在您的应用第一次调用API时预先缓存该数据。

或者您可以使用self.addEventListener('fetch', (event) => { ad-hoc stuff here }),您可以在此处匹配资产或数据请求,并使用缓存或indexedDB响应来劫持响应。这可以防止您需要处理应用中的离线数据。

第一种方法让我感到不安,所以我将在服务工作者中使用addEventListener方法,因为它是什么,加上我的应用程序不必担心这一点。

© www.soinside.com 2019 - 2024. All rights reserved.