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天
}
}
}