Каков эффект псевдонимов имен хостов в кэше апплетов 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 для подсказки в браузере, чем используется только один бачок источника (возможно, вам нужно будет подписать банку из-за политик одного и того же происхождения)