Java 有没有办法清除InputStream缓存
我们使用InputStreams从外部URL读取图像,问题是图像在外部服务器中不断变化,但保持相同的URL。 有时,即使在外部服务器中对映像进行版本化之后,更改也不会出现在我们这边 调试此简单代码行时:Java 有没有办法清除InputStream缓存,java,inputstream,bufferedimage,Java,Inputstream,Bufferedimage,我们使用InputStreams从外部URL读取图像,问题是图像在外部服务器中不断变化,但保持相同的URL。 有时,即使在外部服务器中对映像进行版本化之后,更改也不会出现在我们这边 调试此简单代码行时: InputStream inputStream = new URL(srcURL).openStream(); 我发现输入流仍然返回旧版本的媒体。即使通过浏览器访问相同的srcURL,也会生成新版本的图像 我想这是因为我们以前没有关闭inputStream。 但现在,即使更正了这个问题/重新启
InputStream inputStream = new URL(srcURL).openStream();
我发现输入流仍然返回旧版本的媒体。即使通过浏览器访问相同的srcURL,也会生成新版本的图像
我想这是因为我们以前没有关闭inputStream。
但现在,即使更正了这个问题/重新启动了应用程序,我们仍然得到了旧版本
inputStream是否使用某种memorycache?
你能告诉我我们做错了什么吗
提前谢谢。如果在服务器端设置了适当的HTTP头(即
LastModified
,ETag
,缓存控制
等),我相信您使用的代码会正常工作
无论如何,您使用的代码是:
InputStream inputStream = new URL(srcURL).openStream();
…是以下内容的简写:
URLConnection connection = new URL(srcURL).openConnection();
InputStream inputStream = connection.getInputStream();
在调用getInputStream()
之前,您可以使用URLConnection
实例的setUseCache(boolean)
方法来控制缓存:
对于HTTP/HTTPS,这相当于在请求中设置缓存控制:no Cache
头值,强制行为良好的服务器向您发送资源的最新版本
您还可以使用URConnection.setRequestProperty(key,value)
方法来实现这一点,这是设置HTTP头的一种更通用的方法。当然,您也可以在此处设置其他HTTP头,例如,如果没有匹配的HTTP头,则设置为;如果自
以来进行了修改,则设置为。同样,在调用getInputStream()
之前,必须设置所有头
如果在服务器端设置了适当的HTTP头(例如,LastModified
,ETag
,缓存控制
等),我相信您使用的代码将正常工作
无论如何,您使用的代码是:
InputStream inputStream = new URL(srcURL).openStream();
…是以下内容的简写:
URLConnection connection = new URL(srcURL).openConnection();
InputStream inputStream = connection.getInputStream();
在调用getInputStream()
之前,您可以使用URLConnection
实例的setUseCache(boolean)
方法来控制缓存:
对于HTTP/HTTPS,这相当于在请求中设置缓存控制:no Cache
头值,强制行为良好的服务器向您发送资源的最新版本
您还可以使用URConnection.setRequestProperty(key,value)
方法来实现这一点,这是设置HTTP头的一种更通用的方法。当然,您也可以在此处设置其他HTTP头,例如,如果没有匹配的HTTP头,则设置为;如果自
以来进行了修改,则设置为。同样,在调用getInputStream()
之前,必须设置所有头