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

标签 java image caching resources applet

我正在构建一个 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-ControlExpires 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/

相关文章:

java - Play Framework 附加 #_=_ 以在通过 OAuth2 进行 Facebook 身份验证后重定向?

iphone - iOS、iPhone - 弹出图像查看器

php - 不显示来自 mysql db 的 php 中的 blob 图像

vue.js - 如何在 ASP.NET Core 中缓存静态文件?

java - JBoss 是否缓存类文件?

java - Maven 不使用父 pom 的依赖项进行编译

java - 使用上下文菜单添加图形 - Eclipse GEF

java - 以汇总版本向 OpenLog 提供事件消息

image - Three.js 纹理/图像在运行时更新

css - Chrome 缓存 CSS 但不在 CSS 文件中加载图像