2017-07-06 288 views
0

我正在構建一個Web應用程序。我鏈接到單獨的CSS和JS文件,我想管理緩存。 如果腳本js或樣式css文件已更新,則強制重新加載並替換該文件,否則從緩存中獲取該文件。 這可能嗎?怎麼做?管理瀏覽器緩存

+2

這是偉大的!聽起來是一個好主意。現在你爲什麼在這裏發佈?你沒問問題。我可以說,因爲我在這個評論中提出了一個問題。你可以通過「?」來判斷在它的結尾。我的帖子中沒有看到一個。 – gforce301

+1

贊同,這不是一個問題。請在閱讀以下內容後再次嘗試:https://stackoverflow.com/help/how-to-ask – AGE

+1

你是對的:)這可能嗎?怎麼做? – Amirado

回答

0

作爲默認的CSS和客戶端瀏覽器兌現JavaScript文件。當你更新你的CSS或JavaScript文件只需要更新和HTML頭增加的版本是這樣的:

foo.css?ver=002 
foo.js?ver=002 
+0

這不是一個頭,這是一個查詢字符串參數,和非標準(但常見的)查詢使用這個答案值得更多解釋的字符串是有用的。 – Adrian

0

這取決於在服務器上有很多,如瀏覽器緩存是基於服務器發送的套頭包括Cache-ControlExpiresEtag,它處理從客戶端頭,包括If-Modified-SinceIf-None-Match的方式。這使得瀏覽器嘗試請求服務器返回一個文件只有不已經有最新版本;如果服務器根據標題確定瀏覽器已經具有最新版本,則可以返回304 not modified的響應。

您也可以按照sia的建議使用「cache buster」查詢參數:將一個查詢參數添加到文件名中,大多數服務器都會忽略這個參數,但是您可以使用它來指示存在新版本的相同的文件。儘管查詢參數不允許您控制下載的版本,但它將成爲瀏覽器緩存中的關鍵字的一部分,因此當參數更改時,瀏覽器將再次下載該文件。

還有就是how HTTP caching works over on MDN一個很好的破敗。