我正在使用SDWeb
Image在我的应用程序中缓存图像,但是我最近遇到了一个问题,应该缓存的图像保持刷新.调查一下,我发现来自AWS的完整图像网址实际上是由于参数添加到网址末尾而发生变化.每次我获取包含图像URL的对象时,图像url返回动态“签名”和“过期”参数(出于安全目的).就图像缓存而言,是一个不同的URL,但请注意图像的相同路径.
@H_301_2@首先获取:
@H_301_2@https://myapp.s3.amazonaws.com/path/image123.jpeg?AWSAccessKeyId=SOMEKEY\u0026amp;Signature=vrUFlMFEQ9fqQ=\u0026amp;Expires=1441702633
@H_301_2@1秒后再次获取:
@H_301_2@https://myapp.s3.amazonaws.com/path/image123.jpeg?AWSAccessKeyId=SOMEKEY\u0026amp;Signature=2mcMxUJLyJd7E=\u0026amp;Expires=1441703105
@H_301_2@处理这种情况的最佳方法是什么?如果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; }@H_301_2@欲了解更多信息:SDWebImage | Using the cache key filter