缓存 HTTP 响应还是存储在移动应用程序的数据库中? 更简单的方法:HTTP Cache 拦截更难:将数据存储在结构化数据库中

问题描述

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

我正在构建一个应用程序(在 Flutter 中),它是一个社交网络/信息提要,如应用程序:有用户、个人资料、提要、帖子等。当用户打开应用程序时,我想显示可用的数据上次应用运行时间。

我的问题是实现缓存的正确方法是什么?我能想到的主要有两种方式,一种更简单/不确定的方式,一种更困难/更稳定的方式,我想请教您对它们的看法。我有时间/资源限制。大多数信息是通过 HTTP 请求获得的,因此:

更简单的方法:HTTP Cache 拦截

我会为我的 HTTP 客户端使用开箱即用的缓存插件。我想我可以缓存我所做的每个请求的响应(一段时间)并依赖缓存的信息。图像也基于 url 缓存。当我在应用程序加载时发出请求时,我会返回缓存的结果(如果有),如果是缓存命中,我会再次触发请求,因此当您打开应用程序时,您将看到即时信息,但大约一秒钟后,您将看到获取新数据。此解决方案 ofc 的可用性取决于我设计 API 的程度。

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

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

解决方法

我认为更简单的方法是您最好的选择,我唯一能想到的缓存可能是一个问题,如果您需要必须正确的关键数据而不是旧的缓存值,但您可以通过以下方式避免此问题不缓存关键值。

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