2011-04-27 59 views
10

我有兩臺主機名爲comp1comp2的服務器。我也有一個動態映射到兩臺服務器之一的浮動別名(master)。我服務於兩臺服務器的相同小程序。客戶端通常連接到master,但直接連接到comp1comp2是完全可以接受的。主機名別名對Java小程序緩存有什麼影響?

客戶抱怨他們總是不得不等待applet加載(這是相當大的)。我認爲一旦客戶端下載了必要的jar包,它們就會被緩存起來,不會再被加載。起初我以爲客戶端的插件被設置爲不緩存,但我認爲我找到了問題的原因,儘管我不明白。

  1. 第一次將客戶端連接到master(目前指向comp1)。必須等待罐子下載。這是預料之中的。
  2. 再次將客戶端連接到master。我不必等待罐子下載。這也是預期/期望的行爲。
  3. 將客戶端連接到comp1。必須等待罐子下載。我寧願不會發生這種情況,因爲它是同一臺服務器,但我可以理解爲什麼,因爲comp1在客戶端看來是一個完全不同的主機。
  4. 將客戶端連接回master。再次,我必須等待所有的罐子下載。 這不是我所期望的。罐子應該已經在步驟1/2下載了。

使用Java控制面板,我可以看到緩存中的資源。在我看來,資源是通過URL鍵入的,所以我不知道我爲什麼得到我所做的。看起來好像是同一臺服務器的兩個不同的主機名正在搞亂客戶端的緩存。

我應該提到master主機名不僅僅是一個DNS別名。這是一個實際不同的IP地址,comp1/comp2動態綁定/解除綁定到應用程序正在運行。

你能解釋我在這裏看到什麼,或者建議一些調查途徑嗎?

+0

(Applets?..在2011?Geeez ...) – 2011-04-27 20:23:27

+0

@road到yamburg - 我知道。這是一個很長的故事...... – wolfcastle 2011-04-27 20:26:19

+0

雖然這個問題很有趣。我懷疑它與安全有關。 – 2011-04-27 20:28:23

回答

1

Avenus調查:

這很可能是罐子文件名的結果 - 例如,如果它總是被下載到%TMP%\ app.jar中,那麼每次訪問服務器時都會忽略app.jar。

可能的解決方法:

  • 別名服務器上的文件,因此它可以牽強,因爲master.jar,compN.jar
  • 使用301或302,以提示瀏覽器不僅僅是使用一個源代碼罐(由於同源策略,您可能需要簽署罐子)
相關問題