SDImage加载同一链接的图片,不会刷新问题

问题:用户换头像App端不能更新,

原因:修改头像后图片的URL没有变化,而SDimage自身是靠图片URL来进行缓存的。当某个URL之前进行过缓存,且缓存可用时是不会再从新下载图片。

解决思路:想要解决这个问题,只能是请求特定图片时,使其跳过这个缓存机制每次都重新请求图片。

解决方案:SDImage是提供了方式,只是之前对这方面了解不多。

1将设置图片请求模式改为SDWebImageRefreshCached。这样就会不走SDImage自己的缓存,使用NSURL进行缓存,而且使用的policy为NSURLRequestUseProtocolCachePolicy。

2.做完第一步你会发现还是不好使,那是因为当前请求虽然使用了NSURLRequestUseProtocolCachePolicy方式,但是请求头中没有设置cache-control的值,只用设置这个值请求才会正确发送。

3.确保图片服务器是支持cache-control,这个确认过咱们服务器支持

完成这三步就可以完成上面的需求了。

具体实现:

调用sd的时候先把options设置为SDWebImageRefreshCached

在通过context,设置一个自定义的imageloader,同时给这个自定义的imageloader的请求头设置cache-control,具体模式用must-revalidate就行

疑点:不设置cache-control会导致请求不发生,这个具体代码没找到,但是实际情况是这样的,cache-control设置什么值都可以,这个应该和服务器实现有关系

你可能感兴趣的:(SDImage加载同一链接的图片,不会刷新问题)