在 iOS 上 api 响应缓存的最佳策略
Best strategy for api response caching on iOS
如果我对 api 端点执行简单请求以获取一些数据。这些数据是缓存在磁盘上的任何地方还是每次都获取新鲜数据?
如果每次都抓取,是不是很糟糕?我是否应该缓存它并创建某种方法来检查它是否已在某处服务器上更新!
每次您从服务器请求它时,它都会被检索。
如果需要,您可以使用 NSCache 来缓存项目,它的工作方式类似于 NSDictionary。
// Init it and iVar it somewhere
self.cache = [NSCache new];
id object = [self.cache objectForKey:"http://www.someURL.com/with/a/path"]
if object == nil {
//perform your fetch here
//after the fetch is preformed...
[self.cache setObject: dataObject forKey:"http://www.someURL.com/with/a/path"];
//perform what you need to with said object
} else {
//perform operation with cached object
}
使用 NSCache 的原因是,如果您 运行 进入低内存,它会自行清除。
如果您使用的是 Swift,这里有一个不错的库:
https://github.com/Haneke/HanekeSwift
如果我对 api 端点执行简单请求以获取一些数据。这些数据是缓存在磁盘上的任何地方还是每次都获取新鲜数据?
如果每次都抓取,是不是很糟糕?我是否应该缓存它并创建某种方法来检查它是否已在某处服务器上更新!
每次您从服务器请求它时,它都会被检索。
如果需要,您可以使用 NSCache 来缓存项目,它的工作方式类似于 NSDictionary。
// Init it and iVar it somewhere
self.cache = [NSCache new];
id object = [self.cache objectForKey:"http://www.someURL.com/with/a/path"]
if object == nil {
//perform your fetch here
//after the fetch is preformed...
[self.cache setObject: dataObject forKey:"http://www.someURL.com/with/a/path"];
//perform what you need to with said object
} else {
//perform operation with cached object
}
使用 NSCache 的原因是,如果您 运行 进入低内存,它会自行清除。
如果您使用的是 Swift,这里有一个不错的库: https://github.com/Haneke/HanekeSwift