Как вы контролируете кеширование ресурсов в Java? - PullRequest
0 голосов
/ 17 марта 2011

Я создаю Java-апплет, который включает в себя загрузку изображений среди других ресурсов с URL-адреса.Я обнаружил, что изображения кэшируются, и могу просматривать их в Панели управления Java в разделе Временные файлы Интернета / Просмотр ... / Ресурсы.К сожалению, мне нужно иметь возможность обновлять образы, чтобы эти обновления появлялись между выполнениями апплета, но кеш вызывает проблемы.

Я не могу найти никакой информации о том, что контролирует кэширование этих видов ресурсов.,Какой процесс кэширует ресурсы и как мне его контролировать?В частности, как установить время истечения для изображений или, может быть, даже для определенных изображений?

В случае необходимости я загружаю изображения с помощью кода, подобного следующему: (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();
        ...

Спасибо за любую помощь.

Ответы [ 2 ]

2 голосов
/ 17 марта 2011

Используйте это, чтобы избежать кэширования изображений с сервера:

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

Если вы хотите контролировать время истечения, вы можете установить заголовки Cache-Control или Expires, добавив такие строки:

con.addRequestProperty("Cache-Control", "no-cache, max-age=3600");
con.addRequestProperty("Expires", "Thu, 17 Mar 2011 01:34:00 GMT");
1 голос
/ 17 марта 2011

Используйте URLConnection для загрузки изображения в массив byte. Передайте этот массив byte в createImage(). Вы также можете отключить кэширование, вызвав setUseCaches(false) для объекта URLConnection.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...