2014-04-27 27 views
1

目前我們正在彙總我們的JavaScript文件,並將它們放在遠處,因此返回的用戶可以獲得文件緩存的好處。然後我們在更新時更改文件名,所以我們知道他們會得到新的。如何確保Dojo AMD加載程序獲得新的(未緩存的)版本

AMD載入程序如何工作? (我們正在轉向Dojo,這就是爲什麼我會特別提出這個問題)。我知道我可以將所有內容都移動到一個帶有版本號的新目錄中,並修改dojo配置,但感覺這意味着我不得不說所有內容都已更新,而不是僅針對實際的內容。

當然,我希望它儘可能自動發生。好像我們可能需要從構建過程中傳遞一個版本號或其他東西,但是我沒有看到這些片斷是如何聚集在一起的。

+0

你可能會更好地部署dojo的內置版本。否則,您會注意到您的用戶可以提出100個模塊請求。 –

+0

這當然是正確的,但我不指望dojo會經常更新,所以我們會使用內置版本。然而,我們有我們自己的模塊,分成有用的構建文件,有時這些文件將被更新。我想確保用戶獲得更新的內容,而不是隻保留緩存的內容。 – spinn

回答

0

如果你正在構建你可以改變你的模塊的目標目錄,例如:

http://localhost:8080/my-app/modules/1.1/ 

然後,你可以使用dojoConfig很容易地改變你的包的位置,例如:

var dojoConfig = { 
    packages: [ 
     { name: "app", location: "http://localhost:8080/my-app/modules/1.1/app" } 
    ] 
}; 

所以,如果你使用下面的代碼:

require([ "app/test" ]); 

然後,它會加載以下網址:

http://localhost:8080/my-app/modules/1.1/app/test.js 

如果你改變你的版本,你只需要改變它在dojoConfig,你甚至可能希望使用佔位符在你的構建過程自動化的版本。這也解決了緩存問題,如果版本號更改,則目標URL也會更改,這意味着該版本沒有緩存(還)。

+0

嗯......是的,我想這基本上是我在我的問題中寫的。我希望有一些東西閃爍。 – spinn

+0

什麼是不光滑的?您可以通過更改一行配置來自動執行它。如果你想要更復雜的東西,那麼你將不得不自己構建Dojo。 – g00glen00b

+0

是的,如果我想強制重新加載整個應用程序時,只有一部分更新。對javascript的不同部分進行更改,並以與Dojo構建器集成的自動化方式跟蹤版本控制對我來說並不重要。似乎仍然會有一些手動跟蹤更容易出現人爲錯誤。 - 就像我說的,這實際上就是我在我的問題中提出的......我只是希望一些常見的解決方案是由比我更聰明的人定義的。 – spinn

相關問題