gpt4 book ai didi

android - 定期删除外部缓存目录

转载 作者:行者123 更新时间:2023-11-29 22:17:07 27 4
gpt4 key购买 nike

对于我的应用程序,我将 map 图像存储在外部存储的缓存中,以减少对我正在使用的 API 的调用。由于此数据是 map 数据,因此可能会随时间发生变化。因此,这些图片应该经常更新。

如何以编程方式定期删除缓存目录?例如,每周。

一些额外的想法:也许删除整个目录并不是最好的办法。也许我可以检查每张图片的“新鲜度”,并删除旧的?

最佳答案

是的,使用某种方法限制缓存通常是个好主意。一些缓存具有固定大小,一旦超过缓存大小,旧内容就会被删除。此大小可以是项目数或磁盘空间大小。某些缓存对每个项目都有 TTL(或所有项目都具有相同的 TTL),因此项目会在特定时间后过期。一些缓存可能永远不会过期。也许它的大小受首先缓存的可能项目数的限制。这些方法中的任何一种都是有效的,尽管有些方法可能比其他方法更适合某些场景。

“新鲜度”的想法可能是我会考虑的一种方法。它与 TTL 相同。基本上你想设置你的缓存项将存在的时间长度。将此缓存时间与缓存数据一起存储,然后在读取缓存数据时检查它。如果已过期,您可以删除该缓存文件并再次从 API 检索 map 数据(并缓存)。如果您不想单独存储日期并在您的应用程序中硬编码或配置固定的生命周期,您也可以只读取文件创建时间来做一些事情。

更新以解决评论:

我之前也使用哈希 URL 作为文件名。请注意,可能会发生冲突(当然,这在很大程度上取决于您的哈希算法和数据集)。此外,如果您要浏览大量 URL,则哈希算法的性能可能也很重要。

将缓存元数据存储在文本文件中很好,尤其是在您没有大量 URL 的情况下。不过,您需要小心更新该文本文件的方式。如果您不小心并在没有适当同步的情况下从多个线程访问它,您很容易破坏它。如果您有大量数据,您可以考虑的另一种选择是使用数据库。如果您确实将此缓存元数据存储在一个文件中——无论是数据库还是文本文件——您可以通过为文件名使用不同的方案来避免散列的所有问题。例如,您可以只增加十六进制或基数 36。

关于android - 定期删除外部缓存目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8219999/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com