語法:expires [time|epoch|max|offcss
默認值: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,即永遠過時。spa
off:--------->off:不修改「Expires」和"Cache-Control"的值.net
Cache-Control是用max-age指令指定組件被緩存多久。(在瀏覽器header頭部有)代理
負數參數:表示Cache-Control:no-cachecode
整數或者零:表示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 }
參考:http://www.jb51.net/article/33213.htm