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

时间:2011-04-27 19:43:00

标签: java applet

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

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

  1. 首次将客户端连接到master(当前指向comp1)。必须等待罐子下载。这是预期的。
  2. 再次将客户端连接到master。我不必等待罐子下载。这也是预期/期望的行为。
  3. 将客户端连接到comp1。必须等待罐子下载。我宁愿没有这种情况发生,因为它是同一台服务器,但我可以理解为什么,因为comp1对客户端来说是一个完全不同的主机。
  4. 将客户端连接回master。同样,我必须等待所有的罐子下载。 这不是我的预期。这些罐子应该已经在步骤1/2中下载了。
  5. 使用Java控制面板,我可以看到缓存中的资源。在我看来,资源是由URL键入的,所以我不知道为什么我得到我做的。似乎同一服务器的两个不同的主机名弄乱了客户端的缓存。

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

    您能解释我在这里看到的内容,或建议一些调查途径吗?

1 个答案:

答案 0 :(得分:1)

要调查的Avenus:

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

可能的解决方法:

  • 对服务器上的文件进行别名,因此可以将其作为master.jar,compN.jar
  • 获取。
  • 使用301或302提示浏览器,而不是仅使用一个源jar(由于同源策略,您可能需要签署jar)