1. 程式人生 > >nginx實戰2---瀏覽器設置緩存

nginx實戰2---瀏覽器設置緩存

oca mage itl 修改時間 cache 常見 post 判斷 作用

對常見格式的圖片文件等在瀏覽器本地緩存,對於css,js等文件在瀏覽器本地緩存.

語法:expires [time|epoch|max|off

默認值:off

expires指令控制HTTP應答中的“Expires”和“Cache-Control”Header頭部信息,啟動控制頁面緩存的作用

time參數---》time:可以使用正數或負數

“Expires”頭標的值將通過當前系統時間加上設定time值來設定。

epoch:--->epoch:指定“Expires”的值為 1January,1970,00:00:01 GMT

max:------>max:指定“Expires”的值為31December2037 23:59:59GMT,""Cache-Control"的值為10年。-1:指定“Expires”的值為當前服務器時間減去1s,即永遠過期。

off:--------->off:不修改“Expires”和"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的頁面是最新的,

於是客戶端就可以直接從本地加載頁面了,這樣在網絡上傳輸的數據就會大大減少,同時也減輕了服務器的負擔。

簡單配置如下:

技術分享
 1 知識寫了location   
 2 location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
 3         {
 4                 expires      30d;
 5                 access_log off;
 6         }
 7 
 8         location ~ .*\.(js|css)$
 9         {
10                 expires      12h;
11                 access_log off;
12         }

nginx實戰2---瀏覽器設置緩存