Flutter 的缓存策略

Flutter 的缓存策略

alt

原文 https://medium.com/@romaingreaume/implementing-a-cache-strategy-in-your-flutter-app-5db3e316e7c9

前言

在移动应用程序中,缓存管理是一件非常重要的事情。

在本文中,我将告诉您如何在我的公司 Beapp 中设置策略缓存。

alt

正文

W 怎么了?

如果你读了这篇文章,我想你知道缓存是什么,但是以防万一..。

缓存基本上是将数据存储在设备的存储器中。

W 为什么使用缓存?

  • 如果用户连接不好或者没有互联网
  • 限制 API 调用,特别是对于不需要经常刷新的数据
  • 存储敏感数据(我们稍后讨论)

一张图片胜过千言万语:

alt

Cache Strategy Scheme

缓存策略计划

如您所见,缓存的主要用途是始终尝试向用户显示数据。

关于敏感数据,出于以下原因,我将用户缓存与网络缓存分离:

  • 网络缓存比用户缓存更短暂。
  • 相反,用户缓存存储敏感数据,如访问令牌、刷新令牌,这些数据必须是安全的,用户不能访问。
  • 更具体地说,刷新令牌的有效期可能很长(长达几个月) ,而经典数据可能在一小时后刷新,这将导致不必要的 API 调用。

因此,将这些策略分离开来是一种很好的做法,即使它们可以被合并。

现在我们了解了什么是缓存,让我们深入研究代码吧!

H 如何建立这些策略?

文件树如下所示:

-- lib

----- core

------- cache

--------- storage

--------- strategy

在子文件夹存储中,我们创建了一个文件 Storage.dart,其中包含一个抽象类 Storage

这个类是一个“契约 contrac”,我们在其中声明操作数据的方法。

abstract class Storage {
   
  Future<void> write(String key, String value);

  Future<String?> read(String key);

  Future<void> delete(String key);

  Future<int> count({ String? prefix});

  Future<void> clear({ String? prefix});
}

正如我所说,我们将通过我们的应用程序操纵它们,但为此,我们需要在设备中存储它们的方法。

我们使用 Hive 包,它是一个基于键/值的存储解决方案。

总而言之,Hive 在设备的存储中创建了一个文件夹,您可以在其中存储一个 hiveBox,其中包含 key: value 数据。

我们可以很容易地通过它的名字进入这个盒子。

现在我们可以从 Storage 抽象类中实现这些方法。

class CacheStorage implements Storage {
   
  static const _hiveBoxName = "cache";

  CacheStorage()  {
    Hive.initFlutter() ;
  }

  @override
  Future<void> clear({ String? prefix}) async {
    final box = await Hive.openBox(_hiveBoxName);
    if (prefix == 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值