2012-04-08 61 views
3

我在Tomcat服務器上運行使用Grails的網站。當我更新網站頁面時,Firefox正確應用更新,但Internet Explorer似乎保留緩存的值,直到我明確刪除臨時Internet文件。如何在網站更新時確保Internet Explorer用戶擁有最新的網頁?確保網站更新時在Internet Explorer上清除網站緩存

編輯:我在Internet Explorer 9上測試過,但我認爲以前的版本有同樣的問題。

編輯2:問題只發生在CSS和JavaScript包括。

回答

1

那麼最可靠的方法來告訴瀏覽器重新加載所有的CSS和JavaScript資源,忽略緩存,爲了做到這一點,你應該改變你的CSS和JavaScript資源的名稱,以便瀏覽器知道它需要重新加載它們。

雖然它可能是繁瑣/不切實際的任務,爲您的每一個部署在生產新的編譯時間重新命名所有的CSS和JavaScript的資源,你可以使用

UI的性能插件

爲此目的。它的插件,如果配置正確,確保當你創建一個新的戰爭時,它會將當前版本號從版本庫追加到文件名,因此文件名被更改。限制與這將是你將不得不更新所有對你的css和javascript文件的引用在gsp的包括他們使用插件的tablib而不是直接(這樣,雖然重命名文件,它也取代gsp文件中的相應引用)。

此外,這個插件可以爲您提供一些其他功能,可以幫助您提高Web應用程序的速度。有關插件的更多詳細功能click here

希望有所幫助。

0

與上面Bala類似的一個更現代的答案是將Resources插件(默認包含在Grails 2.0+中,並且可用於Grails 1.3+作爲插件)與Cached Resources插件結合使用。

緩存資源插件與UI性能類似,因爲它用特殊的基於散列的鏈接替換了所有靜態內容鏈接。有什麼比UI Performance更好的是,這些鏈接基於文件內容,所以如果靜態項目的內容沒有改變,他們不是更新。這很好,因爲你的用戶不會被迫重新下載一個實際上沒有改變的文件。

Resources插件允許您將所有資源定義爲模塊 - 這是描述應用程序中使用的CSS,圖像和JavaScript的非常強大的方式。 manual寫得很好,並且會幫助你開始。這需要幾個步驟:

  • 新增<r:layoutResources/><head>標籤佈局剛剛閉幕</body>標記之前。
  • <r:require/><r:script/><r:img/>等價更換您的<link/><script/><img/>標籤的所有(或部分)。
  • 更好的是,將CSS和JavaScript依賴項移動到ApplicationResources.groovy文件中,並將它們設置爲可重用模塊。

它實際上是相當快,使開關,一旦你這樣做,你就可以採取其他插件的優點,如Zipped Resources(啓用GZIP壓縮)和YUI Minify Resources,這minifies CSS和JS文件。