瀏覽器緩存(BrowserCaching)
瀏覽器緩存是為了加速瀏覽,瀏覽器在用戶磁盤上,對最近請求過的文檔進行存儲。當訪問者再次請求這個頁面時,瀏覽器就可以從本地磁盤顯示文檔,這樣,就可以加速頁面的閱覽,緩存的方式節約了網絡的資源,提高了網絡的效率。
實現瀏覽器緩存步驟
瀏覽器緩存可以通過expires指令輸出Header頭來實現,expires指令的語法如下
語法:expires[time| epoch | max |off]
默認值:expires off
作用域:http、server、location
用途:使用expires指令可以控制http應答中的expires和Cache-Control的Header頭信息,起到控制頁面緩存的作用。
expires指令參數說明
Time,可以使用正數或負數,Expires頭標的值,將通過當前系統時間加上設定的time值來獲得。
epoch,指定expires的值為1January,1970,00:00:01 GMT。
Max,指定expires的值為31December 2037 23:59:59 GMT,Cache-Control的值為10年。
Off,表示不修改Expires和Cache-Control的值。
一個HTML頁面,會引用一些JavaScript文件、圖片文件、而這些格式的文件很少會被修改,則可以通過expires設置瀏覽器緩存。
比如,對常見格式的圖片、Flash文件在瀏覽器本地緩存30天,對JS、CSS文件在瀏覽器本地緩存1小時,代碼如下
location ~ .*\.(gif|jip|jpeg|png|bmp|swf)$ { expires 30d; } location ~.*\.(js|css)?$ { expires 1h; }
Cache-Control
Cache-Control是用max-age指令指定組件被緩存多久。(在瀏覽器header頭部有)
負數參數:表示Cache-Control:no-cache
整數或者零:表示Cache-Control:max-age=' '為您設定的時間秒數。
另外:
如果不想讓代理或瀏覽器緩存,加no-cache參數或private參數:
# expires 1d; add_header Cache-Control no-cache; add_header Cache-Control private;
我們可以通過訪問別人的網站,看看別人有沒有做緩存
當我訪問一個網站的時候,看狀態碼全是200

點擊開查看關鍵參數:

第二次去訪問:
變成了304

查看:


這時返回的狀態碼是304,而在請求中比第一次多了If-Modified-Since頭,和原始服務器中的Last-Modified作比較,所以實現瀏覽器緩存並判斷是否過期。
簡單的說,Last-Modified 與If-Modified-Since 都是用於記錄頁面最后修改時間的 HTTP 頭信息,只是Last-Modified 是由服務器往客戶端發送的 HTTP 頭,而 If-Modified-Since則是由客戶端往服務器發送的頭,可以看到,再次請求本地存在的 cache 頁面時,客戶端會通過 If-Modified-Since頭將先前服務器端發過來的 Last-Modified最后修改時間戳發送回去,這是為了讓服務器端進行驗證,通過這個時間戳判斷客戶端的頁面是否是最新的,如果不是最新的,則返回新的內容,如果是最新的,則返回304告訴客戶端其本地cache的頁面是最新的,於是客戶端就可以直接從本地加載頁面了,這樣在網絡上傳輸的數據就會大大減少,同時也減輕了服務器的負擔。

