我正在构建一个 Java 小程序,它涉及从 URL 下载图像和其他资源。我发现图像正在被缓存,并且可以在 Java 控制面板中的临时 Internet 文件/查看.../资源下查看它们。不幸的是,我需要能够更新图像并让这些更新出现在小程序的执行之间,但缓存导致了问题。
我找不到任何有关控制此类资源缓存的信息。什么进程正在缓存资源以及如何控制它?特别是如何设置图像甚至特定图像的到期时间?
如果相关,我将使用如下代码下载图像:(mt 是 MediaTracker 对象)。
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();
...
感谢您的帮助。
最佳答案
使用它可以避免从服务器缓存图像:
URL u = new URL(url);
URLConnection con = u.openConnection();
con.setUseCaches(false);
img = Toolkit.getDefaultToolkit().createImage(new URLImageSource(u, con));
如果您想控制过期时间,可以通过添加以下行来专门设置 Cache-Control
或 Expires
header :
con.addRequestProperty("Cache-Control", "no-cache, max-age=3600");
con.addRequestProperty("Expires", "Thu, 17 Mar 2011 01:34:00 GMT");
关于java - Java中如何控制资源的缓存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5336177/