瀏覽器緩存控制——nginx的expires設置

nginx的緩存設置 提高網站性能

對於網站的圖片,尤其是新聞站, 圖片一旦發佈, 改動的可能是非常小的.我們希望 能否在用戶訪問一次後, 圖片緩存在用戶的瀏覽器端,且時間比較長的緩存.
可以, 用到 nginx的expires設置 .
nginx中設置過期時間,非常簡單,
在location或if段裏,來寫.

格式 expires [time|epoch|max|pff]

time:默認單位(s)

  expires 30s;//緩存30秒 s(second)代表秒
  expires 2h;//緩存2小時 h(hour)代表小時
  expires 30d;//緩存2小時 d(day)代表天
  expires 12m;//緩存12個月 m(month)代表月

epoch:指定“Expires”的值爲 1 January, 1970, 00:00:01 GMT。
max:指定“Expires”的值爲 31 December 2037 23:59:59 GMT,“Cache-Control”的值爲10年。
-1:指定“Expires”的值爲當前服務器時間-1s,即永遠過期。(負數:Cache-Control: no-cache,正數或零:Cache-Control: max-age = #(# 爲您指定時間的秒數))
off:不修改“Expires”和”Cache-Control”的值

(注意:服務器的日期要準確,如果服務器的日期落後於實際日期,可能導致緩存失效)
另: 304 也是一種很好的緩存手段
原理是: 服務器響應文件內容是,同時響應etag標籤(內容的簽名,內容一變,他也變), 和 last_modified_since 2個標籤值
瀏覽器下次去請求時,頭信息發送這兩個標籤, 服務器檢測文件有沒有發生變化,如無,直接頭信息返回 etag,last_modified_since
瀏覽器知道內容無改變,於是直接調用本地緩存.
這個過程,也請求了服務器,但是傳着的內容極少.
對於變化週期較短的,如靜態html,js,css,比較適於用這個方式

例子location

server {
listen 80;  #監聽端口
server_name localohst;  #監聽域名

location /  {
root /var/www/a.com;  #根目錄定位
index index.html;

}

location ~ .*\.(jpg|jpeg|gif|png|js|css)$ {
expires 1d;#只對圖片、JS及CSS緩存1天
}

}

例子if

server {
listen 80;  #監聽端口
server_name localohst;  #監聽域名

location /  {
root /var/www/a.com;  #根目錄定位
index index.html;

 if ($fastcgi_script_name ~* \.[jpg|jpeg|gif|png|js|css] ) {
 expires 1d;#只對圖片、JS及CSS緩存1天
 }
}

}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章