当前位置: 首页 > 知识库问答 >
问题:

在移动应用中缓存HTTP响应还是存储在数据库中?

邵伟
2023-03-14

为了获得更好的UX,移动应用程序将数据存储在客户端(设备上),以便在加载应用程序时提供即时信息,而不必等待来自互联网的数据,甚至在设备脱机时也可以提供数据。当然,以后会尽可能地更新/提取数据。

我正在构建一个应用程序(在flutter中),它是一个类似应用程序的社交网络/信息提要:有用户、配置文件、提要、帖子等。当用户打开应用程序时,我想显示上次应用程序运行时可用的数据。

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

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

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

共有1个答案

龙嘉誉
2023-03-14

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

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

 类似资料:
  • 问题内容: 我想确保浏览器永远不会缓存服务器的响应,这样即使发出两个相同的请求(相隔一纳秒),也始终会与服务器联系。这是实现此目标的正确方法: 谢谢唐 问题答案: 不,那不是正确的方法。这是正确的方法: 您可能会看到其他人在建议其他条目/属性,但是当至少提及上述内容时,它们是完全不相关的。 更改后,请不要忘记在测试之前清除浏览器缓存。 也可以看看: 网站站长缓存教程

  • 我希望能够创建一个自定义的AngularJS服务,当其数据对象为空时发出HTTP“GET”请求,并在成功时填充数据对象。 下一次调用此服务时,我希望绕过再次发出HTTP请求的开销,而是返回缓存的数据对象。 这可能吗?

  • 问题内容: 我已经使用Spring Boot 1.0.2实现了REST服务器。我无法阻止Spring设置禁用HTTP缓存的HTTP标头。 我的控制器如下: 所有HTTP响应均包含以下标头: 我尝试了以下操作来删除或更改这些标头: 调用控制器。 调用控制器。 定义是回报的,我打过电话。 将属性设置为-1或正值。 以上都不起作用。如何在Spring Boot中为所有或单个请求禁用或更改这些标头? 问题

  • 问题内容: 我希望能够创建一个自定义AngularJS服务,该服务在其数据对象为空时发出HTTP“获取”请求,并在成功时填充该数据对象。 下次调用此服务时,我想绕过再次发出HTTP请求的开销,而是返回缓存的数据对象。 这可能吗? 问题答案: Angular的$ http 内置了一个缓存。根据文档: cache – {boolean | Object} – 用$ cacheFactory创建的布尔值

  • 数据是非常小的,就像水果的列表,不会经常改变,也只有一个服务将使用这个数据和服务到其他服务,请提到您的方法的优点和缺点。