3

我正在开发一个应用程序,用户可以在其中更改他的个人资料图片,该图片实际上存储在服务器中,如下所示:http ://serveraddress.com/user-pictures/user_id ,问题在于 volley 使用 Image即使在用户更改了个人资料图像(上传到服务器)之后,缓存的图像也会被显示,而不是“更新”的图像。

我试图从缓存中删除图像,并使图像 URL 无效(因为它是相同的),但它不起作用。

getRequestQueue().getCache().invalidate("http://serveraddress.com/user-pictures/122432", true); //invalidate
mLRUCache.remove("http://serveraddress.com/user-pictures/122432");

我会很感激任何建议。提前致谢。

4

1 回答 1

0

我遇到了同样的问题。经过大量研究,我发现volley在磁盘上缓存图像的方式是根据HTTP缓存头。如果缓存标头说图像仍然有效,则不会再次从服务器请求它。而且由于您存储的新图像具有相同的名称,因此 volley 不会从服务器请求图像。所以,我应用了这个简单的逻辑:

可以说,最初您的图片路径是 xxx.pic.jpg。

从任何随机数生成器函数中获取一个随机数,例如 x。只需将 x 附加到您的个人资料图片路径,即您的图像的新路径将是:xxx.pic.x.jpg。它应该可以解决问题:)

于 2016-07-12T20:26:36.800 回答