主机名别名对Java applet缓存有什么影响?

wol*_*tle 10 java applet

我有两个主机名comp1和服务器comp2.我还有一个浮动别名(master),它动态映射到两个服务器之一.我从两台服务器上提供相同的相同applet.客户端通常连接到master一个客户端,但完全允许连接到任一个comp1comp2直接连接.

客户抱怨他们总是不得不等待applet加载(它非常大).我认为一旦客户端下载了必要的jar,它们就会被缓存而不会被再次加载.起初我以为客户端的插件设置为不缓存,但我认为我找到了问题的原因,虽然我不明白.

  1. 第一次将客户端连接到master(当前指向comp1).必须等待罐子下载.这是预料之中的.
  2. master再次连接客户端.我不必等待罐子下载.这也是预期/期望的行为.
  3. 将客户端连接到comp1.必须等待罐子下载.我宁愿没有这种情况发生,因为它是同一台服务器,但我可以理解为什么,comp1客户端看来是一个完全不同的主机.
  4. 将客户端连接回master.同样,我必须等待所有的罐子下载.这不是我的预期.应该已经在步骤1/2中下载了罐子.

使用Java控制面板,我可以看到缓存中的资源.在我看来,资源是由URL键入的,所以我不知道为什么我得到我做的.似乎同一服务器的两个不同的主机名弄乱了客户端的缓存.

我应该提到master主机名不仅仅是DNS别名.它是一个实际的不同IP地址,comp1/comp2可以在应用程序运行时动态绑定/取消绑定.

你能解释一下我在这里看到的,或者提出一些调查途径吗?

Phi*_*llo 1

阿维纳斯调查:

这很可能是 jar 文件名的结果 - 例如,如果它总是下载到 %TMP%\app.jar,那么每次访问服务器时 app.jar 都会被踩踏。

可能的解决方法:

  • 为服务器上的文件指定别名,以便可以将其作为 master.jar、compN.jar 获取
  • 使用 301 或 302 提示浏览器只使用一个源 jar(由于同源策略,您可能需要对 jar 进行签名)