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

发布于 2024-10-23 00:44:59 字数 559 浏览 1 评论 0原文

我正在构建一个 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();
        ...

感谢您的任何帮助。

I am building a Java applet that involves downloading images among other resources from a URL. I have discovered that the images are being cached, and can view them in the Java Control Panel under Temporary Internet Files / View... / Resources. Unfortunately I need to be able to update the images and have these updates appear between executions of the applet but the cache is causing problems.

I can't find any information about what controls the caching of these kinds of resources. What process is caching the resources and how do I control it? In particular how do I set the expiry time for images, or perhaps even specific images?

In case it is relevant, I am downloading the images using code like this: (mt is a MediaTracker object).

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();
        ...

Thanks for any help.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

仅此而已 2024-10-30 00:44:59

使用它可以避免来自服务器的缓存图像:

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");

Use this to avoid cached images from the server:

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

If you want control over the expiry time you can specifically set the Cache-Control or Expires headers by adding lines like:

con.addRequestProperty("Cache-Control", "no-cache, max-age=3600");
con.addRequestProperty("Expires", "Thu, 17 Mar 2011 01:34:00 GMT");
你的往事 2024-10-30 00:44:59

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

Use a URLConnection to download the image into a byte array. Pass this byte array to createImage(). You may also want to turn off caching by calling setUseCaches(false) on the URLConnection object.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文