我有一個GWT應用程序部署到我們客戶的機器上。作爲一個正在進行的 開發,我們必須不時發佈新的改進版本的 應用程序。每次我們發佈一個新版本時,我們通常會遇到這樣的問題:客戶端的瀏覽器已經緩存了 舊腳本腳本,並且一段時間它的行爲蠻橫,因爲它嘗試使用的數據與它不兼容。什麼是 克服這個問題的最好方法。目前,我必須告訴用戶 要清除瀏覽器的緩存以獲得新版本,但它不會那麼做,因此 不需要這樣做。在GWT App中停止瀏覽器腳本緩存
回答
默認情況下,應用程序的大部分應由瀏覽器緩存,直到構建過程生成新版本的應用程序。
這可能有助於理解GWT引導模型,以瞭解其工作原理。
您的客戶端請求的第一個腳本your-app-name.nocache.js
未被緩存,除了檢查瀏覽器的用戶代理和功能並且爲相關應用程序JS發出第二個請求外,它什麼也不做。
在這一點上,它所請求的腳本應該被瀏覽器緩存,如果之前已經被請求的話。這是一個{indistinguisable-numbers-and-letters}.cache.html
文件。
當您重新部署應用程序時,將會執行nocache.js
文件並向服務器索要不同的cache.html
文件,該文件不會存在於緩存中,但是一旦下載,該文件就會被瀏覽器緩存。
你是否在做任何與延遲綁定或服務器緩存頭文件不同的事情?這可能會導致您的nocache.js
文件被緩存,這將使其從瀏覽器緩存中請求舊的cache.html
。
可能的解決方案取決於您託管應用程序的方式。如果您是直接從servlet容器託管,那麼你可以使用Servlet過濾器像這裏所描述的:
http://seewah.blogspot.com/2009/02/gwt-tips-2-nocachejs-getting-cached-in.html
下面是tadedon庫適當的過濾器:
這裏是guice ServletModule,它使它們可以用於整個guice web應用程序:
如果您正在使用Tomcat中這將是更簡單的前一些反向代理。在apache(例如mod_proxy,mod_jk)的情況下,並假設所有的應用程序資源(html,圖形,java腳本,css等等在 「完美緩存」 部分
http://code.google.com/webtoolkit/doc/latest/DevGuideCompilingAndDebugging.html
:)都穿上了Apache,只需設置在Apache配置這些選項:
<Files *.nocache.*>
ExpiresDefault "access"
</Files>
<Files *.cache.*>
ExpiresDefault "now plus 1 year"
</Files>
在此描述。這種部署方案假定只有rpc請求應該通過反向代理到tomcat。如果由於某些原因,所有的應用程序上下文都被代理到tomcat,你仍然可以使用Apache的LocationMatch
指令而不是Files
指令。
- 1. 如何使瀏覽器停止緩存GWT nocache.js
- 2. 停止網絡瀏覽器緩存
- 3. 跨瀏覽器緩存腳本文件
- 4. 通過瀏覽器緩存java腳本
- 5. 如何防止在瀏覽器中「停止運行此腳本」?
- 6. 停止瀏覽器緩存文本文件
- 7. 如何停止在瀏覽器中緩存流式Comet通信
- 8. 在Rails和瀏覽器中停止緩存圖片?
- 9. 瀏覽器停止/崩潰是否停止腳本執行?
- 10. 防止緩存在瀏覽器
- 11. 如何避免在瀏覽器中停止腳本錯誤
- 12. 在瀏覽器中緩存ASP.NET Ajax ScriptManager腳本
- 13. 阻止xmlHttpReq的瀏覽器緩存
- 14. 因爲瀏覽器(Chrome)緩存,我們如何停止Autofill文本框文本
- 15. 在瀏覽器關閉時停止執行php腳本
- 16. 阻止瀏覽器緩存會話ID
- 17. HTML緩存清單防止瀏覽器
- 18. 完全禁止瀏覽器緩存
- 19. jQuery圖像預加載/緩存停止瀏覽器
- 20. CrystalReports在瀏覽器中停止工作
- 21. 停止瀏覽器請求
- 22. 停止瀏覽器加載未更新的緩存版本的網頁。
- 23. PHP代碼停止腳本從Envoirnment瀏覽器
- 24. 停止瀏覽器後腳本仍然運行
- 25. 如何停止僅用於IE瀏覽器的腳本8
- 26. 關閉瀏覽器後,Google應用腳本停止運行
- 27. 如何讓瀏覽器停止在Firefox中緩存我的頁面?
- 28. 在瀏覽器會話中強制瀏覽器緩存
- 29. 未從瀏覽器緩存中檢索圖像 - gwt upload
- 30. 沒有緩存html停止服務器端緩存或只是瀏覽器緩存?
Jason,它看起來像是你的app-name.nocache.js緩存在瀏覽器中的副作用。 Shahid必須將其服務器配置爲僅緩存* .cache.js並且不緩存* .nocache.js。 除了你提到的所有東西都應該自動落實到位。 – 2010-08-05 07:00:44
@ jason-hall關於如何向通過your-app-name.nocache.js加載的腳本的url注入一些散列的任何想法?在我的情況下,your-app-name.nocache.js在沒有緩存的情況下被正確加載,但作爲其結果加載的腳本仍然來自緩存。我想在每個構建生成一個哈希,並將其添加到網址... – Mabedan 2017-06-09 16:18:15