Как мне обновить кеш для апплета? - PullRequest
3 голосов
/ 12 июля 2011

Я пытаюсь обновить кеш для апплета.Апплет правильно кэшируется, но впоследствии, независимо от того, насколько устаревший кеш, он не будет обновляться.Если я вручную удаляю кеш, при следующей загрузке страницы будет создан новый, и все изменения в файле .jar, который я пытаюсь кешировать, вступят в силу.Однако делать это недопустимо.

Я пытался использовать cache_archive в сочетании с cache_version в моем индексном файле следующим образом:

if (navigator.appVersion.indexOf("Win")!=-1){
    var attributes = { id:'manager', code:'HardwareManagerApplet_FileWriter',          width:1, height:1} ;
    var parameters = {jnlp_href: '/java/HardwareManagerApplet.jnlp', codebase: '/java/hardwaremanager.jar', cache_archive:'hardwaremanager.jar',  cache_version:'0.0.0.7'};
    check = deployJava.runApplet(attributes, parameters, '1.6');
    hardware_enabled = true
    console.log("Applet started")
}

Это не имеет никакого эффекта.Я попытался переместить cache_archive и cache_version в атрибуты и как различные перестановки между ними, но безрезультатно.Я попытался включить cache_option для первого браузера, а затем снова попытался установить его в плагин.Нет кости.Я изучил ETags, и я не уверен, что это будет лучшим решением.Я также изучил последнее изменение, но A) я не уверен, как внедрить его в http, чтобы кэш обновился, и B), который откроет новую банку, если мне придется идти по этому пути.

Есть ли другая разумная альтернатива?А еще лучше, я просто неправильно реализую cache_archive et al.?

И даже если я смогу заставить его кэшироваться каждый раз при загрузке страницы, я буду удовлетворен.

Спасибо за всеи любая помощь!

Редактировать: Блок кода является единственной реализацией, которую я сделал из cache_archive и т. д. Нужно ли поместить пару строк в другом месте?Что касается документации Oracle, я не нашел это очень ясным.

Ответы [ 2 ]

2 голосов
/ 12 июля 2011

Вы пропустили параметр для параметра кэширования, они следующие

Атрибут cache_option может принимать одно из трех значений:

  • Нет - Отключить установку апплета. Всегда загружайте файл с веб-сервера.
  • Браузер - запуск апплетов из кэша браузера (по умолчанию).
  • Плагин - Запуск апплетов из нового кэша подключаемого модуля Java.

По умолчанию в браузере вы должны очистить кеш браузера, чтобы обновленные значения вступили в силу. Используйте плагин, чтобы в полной мере воспользоваться версиями, которые вы хотите реализовать.

0 голосов
/ 25 июля 2011

Кэширование апплета - это работа как виртуальной машины (JVM), так и вашего браузера.Браузер и JVM оптимизированы для кэширования апплета с целью повышения производительности.

Моим решением было одно из:

  1. Очистить кэш виртуальной машины после каждой сборки классов: откройте консоль Java и введите x (очистка ClassLoader-Cache).Затем обновите ваш браузер.или
  2. Закройте браузер и запустите его заново

Я предпочитаю решение 1.

...