fuz*_*uzz 48 iphone caching objective-c uiimageview sdwebimage
我正在使用该SDWebImage库在我的应用程序中缓存Web图像:
https://github.com/rs/SDWebImage/blob/master/README.md
目前的用法:
[imageView setImageWithURL:[NSURL URLWithString:profilePictureUrl] placeholderImage:[UIImage imageNamed:@"placeholder.png"]];
Run Code Online (Sandbox Code Playgroud)
我的问题是,一旦图像被缓存后会发生什么,然后几天后,服务器上的图像文件已用新图像更新?
目前我的应用程序仍在显示缓存的图像.
我无法在任何有关设置缓存超时的文档中看到或识别出文件大小已更改的内容.
如果有人有使用这个特定库的经验,那么任何帮助将不胜感激.
提前致谢.
Nic*_*ver 64
我看了一下源代码.它处理这样的setImageWithURL方法:
如果存在新版本而没有请求远程服务器的请求,而磁盘上存在旧版本,例如使用HTTP协议的ETag.
深入挖掘缓存时间在SDImageCache.m中设置为静态值
static NSInteger cacheMaxCacheAge = 60*60*24*7; // 1 week
Run Code Online (Sandbox Code Playgroud)
它不能用setter改变.
因此,只要缓存中的图像有效,SDWebImagelib就不会下载任何新内容.一周后,它将下载您更改的图像.
Pei*_*Pei 23
你可以使用options参数.
Swift版本:
imageView.sd_setImage(with: URL(string: URLWithString:profilePictureUrl),
placeholderImage: UIImage(named: "placeholder"),
options: .refreshCached,
completed: nil)
Run Code Online (Sandbox Code Playgroud)
Objective-C版本:
[imageView sd_setImageWithURL:[NSURL URLWithString:profilePictureUrl]
placeholderImage:[UIImage imageNamed:@"placeholder.png"]
options:SDWebImageRefreshCached
completed: nil];
Run Code Online (Sandbox Code Playgroud)
干杯!
Mar*_*nek 10
SDImageCache老化的问题(现在有一个setter:maxCacheAge)是SDWebImage从未真正主动对它做任何事情.您需要在某些时候自己调用cleanDisk以从缓存中清除旧数据.注意:当应用程序终止时,SDWebImage会调用cleanDisk,但不保证应用程序从操作系统获得终止通知.
NSURL *imageUrl = nil;
NSDate *lastUpdate = [[NSUserDefaults standardUserDefaults] objectForKey:@"lastUpdate"];
NSDate *currentDate = [NSDate date];
if (lastUpdate == nil
|| ![lastUpdate isKindOfClass:[NSDate class]]
|| [currentDate timeIntervalSinceDate:lastUpdate] > 60 * 60 *24) {
[[NSUserDefaults standardUserDefaults] setObject:currentDate forKey:@"lastUpdate"];
NSString *urlString = [NSString stringWithFormat:@"http://yourdomain.com/image/image.png?%f", [currentDate timeIntervalSince1970]];
imageUrl = [NSURL URLWithString:urlString];
}
Run Code Online (Sandbox Code Playgroud)
如果您希望更改Swift中的默认缓存持续时间.在AppDelegate中设置它.
版本3:
SDWebImageManager.sharedManager().imageCache.maxCacheAge = CACHE_TIME_IN_SECONDS
Run Code Online (Sandbox Code Playgroud)
第4版:
SDWebImageManager.shared().imageCache?.config.maxCacheAge = CACHE_TIME_IN_SECONDS
Run Code Online (Sandbox Code Playgroud)
-
我相信这只会影响设置此值后缓存的图像.IE如果你的应用程序缓存具有默认缓存过期的图像,然后将其更改为其他内容,则您的图像仍将在一周后过期.一个简单的解决方案就是清除缓存.
| 归档时间: |
|
| 查看次数: |
31093 次 |
| 最近记录: |