背景
在搜索引擎中搜索關鍵字.htaccess 緩存,你可以搜索到很多關於設置網站文件緩存的教程,通過設置可以將css、js等不太經常更新的文件緩存在浏覽器端,這樣訪客每次訪問你的網站的時候,浏覽器就可以從浏覽器的緩存中獲取css、js等,而不必從你的服務器讀取,這樣在一定程度上加快了網站的打開速度,又可以節約一下你的服務器流量。
問題
現在問題來了,.htaccess設置的css、js緩存都有一個過期時間,如果在訪客的浏覽器中已經緩存了css、js,在這些css、js緩存未過期之前,浏覽器只會從緩存中讀取css和js,如果你在服務器上修改了css和js,那麼這些更改在回頭客的浏覽器中是不會有變化的,除非回頭客按了Ctrl + F5刷新了你的網站頁面或者手動清空了浏覽器的緩存。一個網站的訪客成千上萬,回頭客也會有不少,你不可能在更新css後讓每個訪客都刷新一下緩存吧,那麼這個問題你會怎麼處理呢?
方法一
更改css文件名:其實解決這個問題很簡單,緩存是通過文件名標記緩存的內容的。在你更新了網站的css文件內容後,在更換一下css的文件名就可以了。如原先html中的css調用語句如下:
復制代碼代碼如下: <link rel="stylesheet" href="style.css" />
改一下css文件名就可以了:
復制代碼代碼如下:<link rel="stylesheet" href="index.css" />
另外一種更改css文件名的方法是將版本號寫到文件名中,如:
復制代碼代碼如下: <link rel="stylesheet" href="index.v2011.css" />
css文件更新後,改一下文件名中的版本號即可:
復制代碼代碼如下:<link rel="stylesheet" href="index.v2012.css" />
方法二
給css文件加個版本號:其實每次修改css文件後還要修改css的文件名有點麻煩,那麼我們可以在加載css語句中加入個版本號(即css鏈接中?後面的內容)就可以了。如原先html中的css調用語句如下:
復制代碼代碼如下:<link rel="stylesheet" href="style.css?v=2011" />
改一下css文件的版本號改成2012就可以了:
復制代碼代碼如下:<link rel="stylesheet" href="style.css?v=2012" />
需要注意的是,部分代理緩存服務器不會緩存網址中包含 "?" 的資源,所以方法二可能會導致你原先的緩存功能失效,可以改用第一種方法。
總結
其實css文件後面的問號起不到實際作用,僅能當作後綴,如果用問號加參數的方法,可以添加版本號等信息,同時可以刷新一下浏覽器端的緩存。一個小小的細節,可以給我們帶來很大的方便。