2010-08-19 51 views
2

我有一個小應用程序,這是一個相當大的(4MB)分佈在廣域網上的幾千個用戶使用的網頁。這些用戶的帶寬從128Kbps到10Mbps不等。大的小應用程序大用戶數低帶寬

當新版本的小程序可用時,就會出現問題;它由所有用戶瀏覽器自動下載,有效地阻塞網絡。

他們真的很討厭「發佈當天上午在這裏:)

有什麼策略來解決這個問題呢?

編輯:我只能從一對服務器集中服務這個小程序。我無法對託管或網絡基礎架構進行任何修改。

回答

0

如果您可以在目錄中添加.htaccess,您可以添加expiresByType,以便客戶端不會每次都詢問服務器。

你看過pack200嗎?和(pack200 + .htaccess) 你看過索引Jar嗎?

安東尼

+0

很好!...沒想到pack200可以用於小程序......是的,索引加上一些漂亮的java_arguments將有助於在這裏大放異彩。謝謝 – 2010-08-21 02:11:14

1

這裏有一些想法:

  • 將你的用戶羣體分成N個相等組,每個組爲提供不同的小應用程序的URL。然後錯開每個小組的小程序副本更新的時間。

  • 將小程序放在一個已被調整的服務器上,以說明小程序的修改日期,並使用它來(粗略地)限制瀏覽器獲取更新的小程序的速率。

  • 將小應用程序推送到大型用戶組的本地網絡上的位置。讓中央服務器發出HTTP重定向,以便每個瀏覽器從「關閉」位置拿起小程序。

  • 在本地網絡上部署緩存HTTP代理&自動代理文件,並阻止直接訪問小程序,迫使用戶通過代理獲取小程序。

最後一個選項可能是最好的。

+0

優秀的建議斯蒂芬...然而我的手在添加/修改基礎架構時很緊張:( – 2010-08-19 10:26:44

1

除了斯蒂芬C提到的之外,我想增加一個你應該考慮的策略。

  • 應考慮將你的applet代碼庫成不同的模塊(存檔)
  • 這些模塊更新,而不是整個4MB小程序。你可以有一個特殊的類加載器來檢查給定模塊的新版本是否可用。
  • 對於修補程序有一個單獨的「修補程序」存檔,可以在任何其他存檔之前加載,以便從修補程序存檔中加載任何更新的類,而不是舊的已下載的存檔。
  • java web start已經做了一些這些事情來避免整個更新。你可以看看鏈接(開發人員文檔)的幾個指針。