2011-03-17 57 views
0

我正在构建一个Java applet,它涉及从URL中下载其他资源中的图像。我发现正在缓存图像,并可以在Java控制面板中的Temporary Internet Files/View .../Resources下查看它们。不幸的是,我需要能够更新图像,并使这些更新出现在applet的执行之间,但缓存导致问题。如何控制Java中资源的缓存?

我找不到什么控制这些各种资源的高速缓存的任何信息。什么过程缓存资源,如何控制它?特别是如何设置图像到期时间,甚至是特定图像?

如果它是相关的,我使用这样的代码下载图像:(MT是媒体跟踪的对象)。

public BufferedImage getImageFromUrl(String url) 
{ 
    Image img = null; 
    try { 
     URL u = new URL(url); 
     img = java.awt.Toolkit.getDefaultToolkit().createImage(u); 
     mt.addImage(img, numImages++); 
     mt.waitForAll(); 
     ... 

感谢您的任何帮助。

回答

2

利用这一点避免从服务器缓存图片:

URL u = new URL(url); 
URLConnection con = u.openConnection(); 
con.setUseCaches(false); 
img = Toolkit.getDefaultToolkit().createImage(new URLImageSource(u, con)); 

如果你想在你可以专门通过添加行设置Cache-ControlExpires头到期时间控制,如:

con.addRequestProperty("Cache-Control", "no-cache, max-age=3600"); 
con.addRequestProperty("Expires", "Thu, 17 Mar 2011 01:34:00 GMT"); 
1

使用URLConnection将图像下载到一个byte阵列。将此byte数组传递给createImage()。您可能还需要由URLConnection对象调用setUseCaches(false)关闭缓存。