我正在使用 SDWebImage
在我的应用程序中缓存图像,但是我最近遇到了一个问题,即应该被缓存的图像不断刷新。仔细研究后,我发现来自 AWS 的完整图像 url 实际上正在发生变化,这是因为附加在 url 末尾的参数。每次我获取包含图像 url 的对象时,图像 url 都会返回动态“签名”和“过期”参数(出于安全目的)。就图像缓存而言,这是一个不同的 url,但请注意图像的相同路径。
第一次获取:
https://myapp.s3.amazonaws.com/path/image123.jpeg?AWSAccessKeyId=SOMEKEY&Signature=vrUFlMFEQ9fqQ%3D&Expires=1441702633
1 秒后再次获取:
https://myapp.s3.amazonaws.com/path/image123.jpeg?AWSAccessKeyId=SOMEKEY&Signature=2mcMxUJLyJd7E%3D&Expires=1441703105
处理这种情况的最佳方法是什么?如果 SDWebImage
可以选择忽略文件路径之外的查询参数,那当然会很棒。
最佳答案
SDWebImage 有一个允许使用自定义键的方法,这在这种情况下很有用,因为 AWS 每次调用时都会更改查询。
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
SDWebImageManager.sharedManager.cacheKeyFilter = ^(NSURL *url) {
url = [[NSURL alloc] initWithScheme:url.scheme host:url.host path:url.path];
return [url absoluteString];
};
// Your app init code...
return YES;
}
关于ios - 使用 SDWebImage 忽略查询参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25721048/