這是一個老問題緩存以及文件,但可以肯定的是,當你更新了一些文件進行一些修改的最後一個版本將送達。例如,衆所周知,你可以將一個get變量追加到文件uri中,但是你失去了所有的緩存優勢,這些文件永遠不會被緩存,呵呵! 就目前而言,我發現trought一些網頁建議最好的辦法是:如何巧妙地緩存css&javascript文件?
- 附加到期的相關信息在htaccess的,例如:ExpiresByType文/ JavaScript的 「進入加7天」的
- 爲文件名+要求「 - 」 + lastModifTimestamp(src)+ fileExtension,例如:'dir/usualfilename-345678.js'。該lastModifTimestamp由 服務器腳本,如PHP filemtime($ SRC)設置
- 然後在htaccess的,添加改寫 'DIR/usualfilename-2345678.js' 到 'DIR/usualfilename.js' 一個重寫規則:
RewriteRule (.+)-[0-9]+(\.(js|css))$ $1$2 [L]
的優點是,你永遠不必改變你使用的文件名,甚至如何巧妙地或古怪的訪問者瀏覽器的行爲,緩存是有效的,你肯定它得到了更新的文件,如果修改。
然後在我的dojoConfig(dojo 1.7+)中,例如我喜歡所有模塊路徑後綴爲最後一個修改時間戳(我的dojo配置是用dinamically寫入PHP)的包。我發現的唯一方法是使用別名屬性:我必須別名所有包的文件,問題是它很重,然後如果我的包中有100個模塊,即使我需要,我也需要100個已聲明的別名只有3個文件...它不是很「動態」。 cachebust屬性很近,但它適用於所有文件,並且如上所述,它存在問題。
我的問題是:
- 你知道一個更好的辦法來管理緩存和更新的文件作爲 在dojoConfig mentionned
- ,有沒有對 應用此操作的一些包文件的一些聰明的方法?
謝謝你的任何相關信息!
感謝您的回覆,1)是的,我使用這種方式,完美的工作,使用dojo AMD加載程序和模塊路徑,uris和別名時遇到了困難... 2)沒有弄清楚這個解決方案, ,它看起來有點沉重,我更喜歡第一個解決方案,因爲我只需要上傳修改後的文件 – dmidz