有時在引用樣式檔案或資源檔案時會加上版本號碼
例如:style.css?v=20140520
background: xxx.jpg?v=201140520
我是菜鳥,有這麼多困惑:
PHP中文网2017-04-25 09:05:56
我們希望工程師源碼是這麼寫的:
<script type="text/javascript" src="a.js"></script>
但是線上程式碼是這樣的:
<script type="text/javascript" src="a_82244e91.js"></script>
其中”_82244e91”這串字元是根據a.js的檔案內容進行hash運算得到的,只有檔案內容發生變化了才會有更改。由於版本序列是與檔案名稱寫在一起的,而不是同名檔案覆蓋,因此不會出現上述所說的那些問題。同時,這麼做還有其他的好處:
線上的a.js不是同名檔案覆蓋,而是檔案名稱+hash的冗餘,所以可以先上線靜態資源,再上線html頁面,不存在間隙問題;
遇到問題回溯版本的時候,無需回滾a.js,只須回滾頁面即可;
由於靜態資源版本號是檔案內容的hash,因此所有靜態資源可以開啟永久強緩存,只有更新了內容的檔案才會
快取失效,快取利用率大增;
修改靜態資源後會在線上產生新的文件,一個文件對應一個版本,因此不會受到建構CDN快取形式的攻擊
靜態資源版本更新與快取
某草草2017-04-25 09:05:56
世界只因有你2017-04-25 09:05:56