繁体   English   中英

您如何控制Java中的资源缓存?

[英]How do you control the caching of resources in Java?

我正在构建一个Java小程序,其中涉及从URL下载其他资源中的图像。 我发现图像已被缓存,可以在Java控制面板的“ Internet临时文件” /“查看...” /“资源”下查看它们。 不幸的是,我需要能够更新图像并使这些更新出现在applet的执行之间,但是缓存引起了问题。

我找不到有关如何控制此类资源缓存的任何信息。 什么进程正在缓存资源,我该如何控制它? 特别是如何设置图像甚至特定图像的到期时间?

如果相关,我将使用以下代码下载图像:(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-ControlExpires标头:

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

使用URLConnection将图像下载到byte数组中。 将此byte数组传递给createImage() 您可能还想通过在URLConnection对象上调用setUseCaches(false)来关闭缓存。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM