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



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

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

  1. 第一次连接客户端到master(当前指向comp1)。必须等待jar下载。
  2. 重新连接master。我不需要等待jar下载。这也是期望/期望的行为。
  3. 连接客户端到comp1。必须等待jar下载。我宁愿不发生这种情况,因为它是同一个服务器,但我可以理解为什么,因为comp1出现在客户端作为一个完全不同的主机。
  4. 将客户端连接回master。同样,我必须等待所有jar下载完毕。这不是我期望的。应该已经在步骤1/2中下载了jar文件。

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

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

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

Avenus调查:

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

可能的解决方法:

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

最新更新