如何缓存使用 Embedly API 派生的文章文本?

问题描述 投票:0回答:1

在我的应用程序中,当用户选择要阅读的文章时,我使用 Embedly 的 Extract API 来提取文章的内容 html,当我修剪所有 HTML 标签的

NSString
时,我就得到了文章的全文。

Embedly 给了我一定的 API 调用限制(每月 50,000 次调用)。如果用户多次选择同一篇文章,我的 Embedly Extract API 调用将对该文章的同一 URL 进行多次。

如果用户选择同一篇文章 3 次,这是否意味着我将在同一 URL 上浪费 3 次 Embedly API 调用?如果是这种情况,如何缓存文章全文?

如果在同一个 URL 上浪费多个 API 调用是一个问题,我需要进行设置,以便当用户第二次选择一篇文章进行阅读时,就不会费心对 Embedly 进行 API 调用,因为我已经缓存了文章全文。

我对缓存的整个概念很陌生。我读到当数据不太可能改变时应该使用它。我该怎么做呢?

NSUserDefaults
CoreData

关于缓存的另一件让我困惑的事情是:如果不再需要缓存的文章,例如,在我的应用程序的文章中不再向用户显示它,我如何知道删除它? RSS 提要?

如有任何帮助或建议,我们将不胜感激。

ios objective-c caching core-data
1个回答
1
投票

如果您希望仅在应用程序处于活动状态时才进行缓存 - 请使用

NSCache
,它是一个类似
NSDictionary
的 API,如果 iOS 中的内存压力很高,缓存会自动清除。

您可能需要一个持久缓存,即使用户终止应用程序也能正常工作。那么你能做的最好的事情就是在模型对象中实现

NSCoder
来为你保留结果。或者更简单,只需使用
NSDictionary
序列化
- (BOOL)writeToFile:(NSString *)path atomically:(BOOL)flag

保存 API 调用的最佳解决方案是实际上拥有一个适当的后端并在后端缓存该后端(假设用户提供的链接以任何方式都不是他们的私人数据、个人数据、银行账户等)。后端应该调用 Embedly 并在那里缓存所有请求。因此,即使相同的用户检查相同的 URL,也不会执行 2 次 API 调用。

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.