當呈現引用靜態文件(.js,.css)的html文件時 - 如何處理緩存清除?每次更改文件時,是否都手動更改blabla.css?v = VERSIONNUMBER?你有一些基於文件mtime的自動機制嗎?node.js緩存清除技術
回答
我會留下緩存到HTTP協議,因爲它是專爲此而設計的。只需在每個響應中提供一個ETag
響應標頭,並通過檢查If-none-match
請求標頭來添加對條件請求的支持。
計算實體標籤的好方法取決於您存儲文件的方式。在典型的* nix文件系統中,inode值是一個好的開始。
例子:
fs.stat(filePath, function(err, stats) {
if (err || !stats.isFile()) {
//oops
}
else {
var etag = '"' + stats.ino + '-' + stats.size + '-' + Date.parse(stats.mtime) + '"';
//if etag in header['if-non-match'] => 304
//else serve file with etag
}
});
在特殊情況下,你可能甚至想緩存在內存的eTag甚至文件和註冊fs.watchFile()
回調,以該條目作爲文件的變化,一旦失效。
謝謝。但我認爲,一些瀏覽器忽略這樣和那樣的標題,並且不打擾檢查304的是否他們有緩存中的文件..我想念你的建議仍然如何解決這個問題? –
此外,FireFox可以..嗯.. *躺在*給我(通過螢火蟲)?在它的Net標籤頁中,我看到請求會出去獲取這些靜態文件,並返回一個很好的200 http響應,而在_reality_中它們不會打到我的服務器或者在Fiddler中顯示(它們只是由非常激進的本地緩存提供服務) - 再次請讓我明白,如果我失去了一些東西。 –
- 1. php緩存技術
- 2. 聚合物CLI構建|緩存清除技術
- 3. 分佈式緩存技術
- 4. Hibernate的緩存技術
- 5. MVC3數據緩存技術
- 6. AngularJS高級緩存技術
- 7. Node.JS工作技術
- 8. 清除緩存
- 9. 緩存清除
- 10. Django緩存 - 清除緩存
- 11. apache php使用哪種緩存技術
- 12. Hadoop - 數據塊緩存技術
- 13. 需要數據緩存技術幫助
- 14. 數據緩存技術/提示/ AppFabric
- 15. PHP上的node.js-like技術
- 16. 清除幀緩存
- 17. 清除memory_get_peak_usage緩存
- 18. 清除緩存,ObjectCacheManager
- 19. SILEX清除緩存
- 20. repcached清除緩存
- 21. 清除asp緩存?
- 22. 清除緩存7
- 23. 清除PhoneGap緩存
- 24. 清除ADF緩存
- 25. 清除PivotItem緩存
- 26. 清除UITableView緩存
- 27. window.location.reload清除緩存
- 28. 清除緩存7.3
- 29. 清除dom緩存
- 30. 清除ActiveRecord緩存
我們使用最簡單的方法實現了這一點:只需將應用程序的開始時間戳添加爲每個靜態資源的查詢字符串即可。示例:http://ankitjain.info/ankit/2013/12/05/cache-busting-nodejs-express-jade/ – ankitjaininfo