我正在使用SDWebImage库在我的应用程序中缓存网络图像:

https://github.com/rs/SDWebImage/blob/master/README.md

当前使用情况:

[imageView setImageWithURL:[NSURL URLWithString:profilePictureUrl] placeholderImage:[UIImage imageNamed:@"placeholder.png"]];

我的问题是,一旦图像被缓存,几天后服务器上的图像文件被更新为新图像,会发生什么?

目前,我的应用程序仍在显示缓存的图像.

我在任何文档中都看不到设置缓存超时或识别文件大小已更改的内容.

如果任何人有使用这个特别的图书馆的经验,那么任何帮助都将不胜感激.

提前谢谢.

推荐答案

我看了一下源代码.它处理setImageWithURL方法如下:

  1. 询问内存缓存是否有图像,如果有,返回图像,不要再继续
  2. 询问磁盘缓存是否有映像,如果有,请返回映像,不要再继续
  3. try 下载图像,成功返回图像,否则保留占位符图像

没有发送请求来询问远程服务器是否有新版本,而磁盘上有旧版本,例如使用HTTP协议的ETags.

将缓存时间设置为静态值SDImageCache.m

static NSInteger cacheMaxCacheAge = 60*60*24*7; // 1 week

它不能用setter更改.

因此,只要缓存中的图像有效,SDWebImage库就不会下载任何新内容.一周后,它将下载您更改的图像.

Objective-c相关问答推荐

禁用手势识别器

为什么在目标 c 的静态上下文中允许 self

如何从 Appdelegate 显示 UIAlertController

使用 [NSBundle mainBundle] pathForResource: ofType:inDirectory: 访问文件

具有匿名函数/块的 NSTimer?

在 NSData 和 base64 字符串之间转换

Objective-C:集合枚举块中的 continue继续?

如何在使用 React Native 时实现 SSL 证书固定

Objective-C 的 Eclipse 插件?

iOS7过度导航栏按钮填充

将 NSArray 转换为 NSDictionary

UITabBar 未在 ios 7 中显示所选项目图像

从 NSString 中删除换行符

NSMutableArray 按顺序添加对象

无法在导航栏中心设置titleView,因为返回按钮

判断文件是否存在于路径中

无法加载从设备上运行的包中的 nib 引用的图像

哪个是正确的,nil 或 NULL,来标记没有 Objective-C 块?

有没有办法在用户已经在 iOS 上拒绝相机访问权限后向他们询问?

找出用户是否按下了 uinavigationcontroller 中的后退按钮?