2012-03-08 65 views
12

我正在使用RequireJS(jQuery版本),我想將GET參數附加到我的腳本以防止不必要的緩存。使用RequireJS的URL緩存清除參數?

我按照文檔中的建議使用the urlArgs parameter。這是我的app-build.js文件:

({ 
    appDir: "../", 
    baseUrl: "scripts/", 
    urlArgs: "cache=v2", 
    ... 

然後我生成項目如下:

$ node ../../r.js -o app.build.js 

在app-build目錄的輸出現在既包含require-jquery.js,這是相同的文件之前,和require-jquery.js?cache=v2 ,這是空白的。

index.html文件似乎沒有任何參考cache=v2。當我在瀏覽器中加載頁面時,我沒有看到任何cache=v2參數附加到任何腳本。

我做錯了什麼?

回答

0

我會嘗試使用優化程序的不同build.js文件與運行實時應用程序的build.js文件。根據您的描述,優化器腳本似乎無法正確處理urlArgs參數(因爲它正在輸出名爲require-jquery.js?cache = v2的文件)。

我不希望cache = v2在index.html中顯示(爲什麼會這樣?),但是您期望在網絡活動日誌中可以正確使用它。

1

上urlArgs文檔:

「在開發過程中可以使用這個有用, 但可以肯定的部署代碼之前將其刪除」

this issue from Github,詹姆斯·伯克: 「不嘗試在構建期間使用urlArgs「

1

urlArgs參數更多的是運行時配置(即只能被RequireJS理解,而不是r.js優化器),這似乎是由於作者的stated認爲它只適合開發(和「b廣告「不發送正確標題的開發服務器)。所以,你要麼需要配置它在您的通話require.config(由require.js加載.js文件,通常main.js或config.js):

require.config({ 
    // other config, like paths and shim 

    urlArgs: "cache=v2" 
}); 

或者,按照該其他SO answer,你可以在加載require.js之前直接在<script>塊中定義它。