2016-12-03 649 views
1

我一直在開發一個測試新東西的網站,我需要弄清楚「?v =」的事情。但我不知道它是如何工作的,所以有人可以向我解釋這個請哈哈?像如何以及如何運作。HTML鏈接中的「?v =」是如何工作的?

那麼將這個樣子,以及如何將服務器上的文件名,這個變化:

<script src="assets/js/moticulous.js"></script> 
<link rel="stylesheet" href="assets/js/platforms.css"/> 

與此相反:

<script src="assets/js/moticulous.js?v=1"></script> 
<link rel="stylesheet" href="assets/js/platforms.css?v=1"/> 
+1

爲什麼你認爲你需要弄明白?就像,你認爲它會爲你解決什麼問題? – Pointy

+0

[通過參數緩存清除]可能的重複(http://stackoverflow.com/questions/9692665/cache-busting-via-params) –

回答

0

用來控制腳本,CSS和圖像文件緩存的技術。

瀏覽器將下載帶有?v = 1參數的腳本文件(例如「http://example.com/path/to/script.js?v=1」)並將其緩存到訪問者磁盤。下次瀏覽器訪問該頁面時,如果URL仍然是「http://example.com/path/to/script.js?v=1」,則會加載緩存的版本。

如果將?v = 1更改爲?v = 2,則緩存版本不再有效,因爲完整URL不再與瀏覽器緩存的內容相同。這導致下載並緩存新文件。無論服務器配置或瀏覽器設置的緩存設置如何,這都會強制最新的更改。

此技術通常與版本號(可能爲什麼是v =)一起使用,以在軟件版本更新時強制新下載js。

在您的後端代碼中,您可以用當前軟件版本替換= 1部分來使此緩存控制動態化。或者,只要資產發生變化,您就可以增加版本號,但這樣做的動態性較差或需要更多工作才能實現。

0

傳遞虛擬HTTP GET字符串以防止緩存,因爲某些瀏覽器緩存.js和.css文件。通常這樣做是爲了防止在對.css或.js文件進行更改時,瀏覽器通過瀏覽器緩存加載較舊版本的文件。將時間戳值添加到名稱(如<文件名>?<時間戳>)比添加版本更受歡迎,因爲它會在每次查看頁面時強制瀏覽器下載文件,因爲沒有兩個請求時間具有相同的時間戳。