在移动应用程序中缓存 HTTP 响应或存储在数据库中?

Cache HTTP response or store in database in mobile apps?

为了获得更好的用户体验,移动应用程序将数据存储在客户端(在设备上),以便在加载应用程序时提供即时信息,而无需等待来自互联网的数据,即使设备处于离线状态也无需提供数据。当然数据是 updated/fetched 以后可能的话。

我正在构建一个应用程序(在 flutter 中),它是一个类似于应用程序的社交 network/information 提要:有用户、个人资料、提要、帖子等。当用户打开该应用程序时,我想显示数据上次应用 运行.

可用

我的问题是实现缓存的正确方法是什么?我能想到的主要有两种方式,一种是 easier/uncertain 方式,另一种是 difficult/stable 方式,我想听听你对它们的看法。我有 time/resource 个约束条件。大多数信息是通过 HTTP 请求获得的,因此:

更简单的方法:HTTP缓存拦截

我会为我的 HTTP 客户端使用开箱即用的缓存插件。我想我可以只缓存我发出的每个请求的响应(一段时间)并依赖缓存的信息。图像也基于 url 进行缓存。当我对应用程序加载发出请求时,我 return 缓存结果(如果有的话),如果它是缓存命中,我会再次触发请求,所以当你打开应用程序时,你会立即看到信息,但一秒钟后左右你也会得到新的数据。这个解决方案的可用性取决于我设计 API.

的程度

更难:将数据存储在结构化数据库中。

这是我尽量避免的选项,因为实施它需要更多时间。它可以是 SQL 或文档存储,我必须实现缓存外观 up/save/update 机制。由于我只是在构建应用程序,我认为这会减慢我的速度,因为数据类型/架构可能仍会发生变化。但这是移动端缓存的最终方式吗? 谢谢

我认为更简单的方法是你最好的选择,我唯一能想到的缓存可能是一个问题是如果你需要必须正确的关键数据而不是旧的缓存值,但你可以避免这种情况不缓存临界值的问题。

此外,如果您使用 firebase,它会执行一些可能有用的自动缓存。