原文出處:http://blog.csdn.net/csdn100861/article/details/50684438
問題描述
最近將公司官網樣式進行了調整,部署到伺服器後訪問發現頁面展示不正常,但是重新整理之後就會展示正常。 問題分析
研究之後發現可能的原因有 css檔案過大,載入緩慢 本機快取問題,雖然伺服器修改了css檔案,但是瀏覽器仍然使用本機快取的css,
需要使用者多重新整理一次才能正常展示顯然是很不合理的,那麼怎麼樣解決更新後讓瀏覽器請求新的css或js檔案呢。 解決辦法 方法1 更新檔案後更改css/js檔案名稱。
其實解決這個問題很簡單,緩衝是通過檔案名稱標記緩衝的內容的。在你更新了網站的css檔案內容後,在更換一下css的檔案名稱就可以了。如原先html中的css調用語句如下:
<link rel="stylesheet" href="style.css" type="text/css" media="screen"/>
1 1
改一下css檔案名稱:
<link rel="stylesheet" href="styleV2.css" type="text/css" media="screen"/>
1 1
方法2 給css/js檔案加個版本號碼
每次修改css檔案後還要修改css的檔案名稱有點麻煩,那麼我們可以在載入css語句中加入個版本號碼(即css連結中?後面的內容)就可以了。如原先html中的css調用語句如下:
<link rel="stylesheet" href="style.css?v=2015" type="text/css" media="screen"/>
1 1
將css檔案的版本號碼改成新的:
<link rel="stylesheet" href="style.css?v=2016" type="text/css" media="screen"/>
1 1
關於css/js檔案尾碼參數:
css檔案後面的問號起不到實際作用,僅能當作尾碼,如果用問號加參數的方法,可以添加版本號碼等資訊,更新的同時可以重新整理一下瀏覽器端的緩衝。一個小小的細節,可以給我們帶來很大的方便。
比如:
<script type="text/javascript" src="homepage.js?version=1.2.6"></script>
1 1
<link rel="stylesheet" href="base.css?version=2.3.3" type="text/css"/>
1 1
使用參數的兩種作用:
用戶端會緩衝css或js檔案,因此每次升級了js或css檔案後,改變版本號碼,用戶端瀏覽器就會重新下載新的js或css檔案,起到重新整理緩衝的作用。
指令碼並不存在,而是服務端動態產生的,因此帶了個版本號碼,以示區別。 即上面代碼對於檔案來說 等價於 :
<script type="text/javascript" src="homepage.js"></script>
1 1
<link rel="stylesheet" href="base.css" type="text/css"/>
1 1
但瀏覽器會認為他是 該檔案的某個版本。
第一使用最多,也可能兩種作用同時使用。