我正在构建一个特定的图书阅读器,像应用程序。
主页调用api/booksList并接收包含每个图书信息的json数组,如下所示:
[ { id: server_db_id, title: "title test", sum: 10 , date: ... }
]在请求后缓存它,所以我不会将图书列表保存到indexedDB、localStorage或其他存储中。如果我需要一本特定的书,我只需要再次调用api图书列表并过滤它。这设计不好吗?(书籍将超过200项)
当用户打开书时,它调用/api/book/book_id并缓存它,打开的图书响应是书籍行的json列表,例如:
[
{
id: ...
content: "This is line...lore ipsum..."
....
}
]我将api响应放入vue数据变量中,组件被呈现为correclty。
我不使用任何一种处理程序来保持离线的手。要检测用户是否已经打开了这本书,我只需调用api,检查错误是否发生或响应体是否有内容。
这是一个错误的、糟糕的还是愚蠢的决定?这会不会达到配额限制api或其他类型的限制?普华的“神”会举起手指对我说:“哇!”(一开始我不使用indexedDB,因为它需要一些模型处理,如果可能的话,我想让事情变得更简单)
发布于 2018-07-14 14:47:50
我自己只是在研究这个问题,并得出结论,目前我要采用这种方法,根据它们的匹配路线,我使用cache作为资产,js, css, html等。
然后,当涉及到数据(例如json请求等)时,最好将它们存储在indexedDB (或等效的)中,这实际上不需要这样的模型或模式。
参见杰克阿奇博尔德的索引数据库-承诺库https://github.com/jakearchibald/idb,它真的很简单,让你的头脑。
虽然杰克和艾迪都说这不是一个事实上的规则,所以你可以最终决定什么对你最好。
为了更好的澄清,请阅读这个。
它帮助我更好地决定如何向前迈进。
建议也
这里的导游非常善于带你了解你所需要的一切。
祝你好运
随机思想(编辑)
但是,有一件事让我对此感到怀疑,这是基于我所看到的一些例子和指南,即数据存储是以一种更特殊的方式处理的。例如,如果PWA调用了一个API,我遇到了两种方法,您可以在应用程序中或在服务工作者中管理缓存的数据,例如,如果应用程序中获取JSON的API调用失败,它可以恢复到在indexedDB中获取数据,希望这是应用程序第一次调用API时预缓存的数据。
或者您也可以使用self.addEventListener('fetch', (event) => { ad-hoc stuff here }) --这是您可以匹配资产或数据请求的地方,并且可以用缓存或indexedDB响应劫持响应。这样可以防止应用程序中需要处理脱机数据。
第一种方法让我感到不安,所以我将在服务工作者中采用addEventListener方法,因为这就是它的目的,而且我的应用程序也不必担心这一点。
https://stackoverflow.com/questions/51335678
复制相似问题