Каков эффект псевдонимов имен хостов в кэше апплетов Java?

У меня есть два сервера с именами хостов comp1 и comp2. У меня также есть плавающий псевдоним (master), который динамически сопоставляется с одним из двух серверов. Я обслуживаю один и тот же апплет с обоих серверов. Клиенты обычно подключаются к master, но вполне допустимо напрямую подключаться к comp1 или comp2.

Клиенты жалуются на то, что им всегда приходится ждать загрузки апплета (он довольно большой). Я думал, что как только клиент загрузит необходимые банки, они будут кэшироваться и больше не будут загружены. Сначала я думал, что клиентский плагин настроен не на кеш, но я думаю, что нашел причину проблемы, хотя я этого не понимаю.

  • Подключить клиента к master (который в настоящее время указывает на comp1) в первый раз. Должен ждать загрузки банок. Ожидается.
  • Подключить клиента к master снова. Мне не нужно ждать загрузки банок. Это также ожидаемое/желаемое поведение.
  • Подключить клиента к comp1. Должен ждать загрузки банок. Я бы предпочел, чтобы это не произошло, поскольку это тот же сервер, но я могу понять, почему, поскольку comp1 отображается клиенту как совершенно другой узел.
  • Подключить клиент обратно к master. Опять же, я должен дождаться загрузки всех банок. Это не то, что я ожидал. Банки должны были быть загружены уже в шагах 1/2.

Используя панель управления Java, я вижу ресурсы, которые находятся в кеше. Мне кажется, что ресурсы привязаны по URL-адресу, поэтому я не знаю, почему я получаю то, что делаю. Кажется, что два разных имени хоста для одного и того же сервера испортят кеш клиента.

Я должен упомянуть, что имя хоста master - это не просто псевдоним DNS. Это фактический другой IP-адрес, который comp1/comp2 динамически связывает/развязывает, пока приложение работает.

Можете ли вы объяснить, что я вижу здесь, или предложить некоторые способы для расследования?

Ответ 1

Avenus для исследования:

Это может быть следствием имени файла jar. если он всегда загружается в% TMP%\app.jar, тогда app.jar будет топать при каждом посещении сервера.

Возможные обходные пути:

  • Псевдоним файла на серверах, поэтому его можно выбрать как master.jar, compN.jar
  • Используйте 301 или 302 для подсказки в браузере, чем используется только один бачок источника (возможно, вам нужно будет подписать банку из-за политик одного и того же происхождения)