1. 程式人生 > 實用技巧 >Nginx--快取

Nginx--快取

一般存的是靜態資源,可以提高客戶端的訪問速度,並減輕伺服器的壓力

1客戶端快取

 通過設定 expires 指令,響應頭中將會返回Expires 和Cache-Control欄位

 當瀏覽器發現響應頭存在這樣的快取欄位,當再次請求相同資源時,就會確認在客戶端的資源是否過期

location / {
    expires    30m;    #快取30分鐘
}

2伺服器快取(主要設定在反向代理伺服器上)

 將靜態資源的快取設定在伺服器端,當多個使用者訪問同一個資源時,快取命中率及系統的效能將以指數的形式提升

[root@localhost ~]# vim /usr/local/nginx/conf/nginx.conf
     ...
        upstream backend{
            server 
192.168.198.130; server 192.168.198.131; } proxy_cache_path /usr/local/nginx/cache levels=1:2 keys_zone=test:20m max_size=10g; server { listen 80; server_name localhost; #charset koi8-r; #access_log logs/host.access.log main; location
/ { proxy_pass http://backend; proxy_set_header X-forwarded-for $proxy_add_x_forwarded_for; proxy_set_header X-real-ip $remote_addr; proxy_cache test; proxy_cache_valid 200 10m; } }
proxy_cache_path
語法:proxy_cache_path path [levels
=number] keys_zone=zone_name:zone_size [inactive=time] [max_size=size]; 預設值:None 使用欄位:http 指定快取的路徑和一些其他引數,快取的資料儲存在檔案中,並且使用代理url的雜湊值作為關鍵字與檔名 levels - 目錄結構,可以使用任意的1位或2位數字作為目錄結構,如 X, X:X或X:X:X ,最多三級 keys_zone - 指定所有活動的key和元資料儲存的共享記憶體池區域 可以定義多個記憶體池,但必須是不重複的路徑,例如: proxy_cache_path/data/nginx/cache/onelevels=1 keys_zone=one:10m; proxy_cache_path/data/nginx/cache/twolevels=2:2 keys_zone=two:100m; proxy_cache_path/data/nginx/cache/threelevels=1:1:2 keys_zone=three:1000m; inactive - 指定快取資料的失效時間,預設為10分鐘 max_size - 定義最大快取大小,超出後則刪除最少使用的資料
proxy_cache
語法:proxy_cache  zone_name;
預設值:None
使用欄位:http, server, location
設定一個快取區域的名稱,一個相同的區域可以在不同的地方使用
proxy_cache_valid
語法:proxy_cache_valid reply_code [reply_code …] time;
預設值:None
使用欄位:http, server, location
為不同的應答設定不同的快取時間,例如:
proxy_cache_valid 200 302 10m;
proxy_cache_valid 404 1m;
為應答程式碼為200和302的設定快取時間為10分鐘,404程式碼快取1分鐘
如果只定義時間:
proxy_cache_valid 5m;
那麼只對程式碼為200, 301和302的應答進行快取
同樣可以使用any引數任何應答
proxy_cache_valid 200 302 10m;
proxy_cache_valid 301 1h;
proxy_cache_valid any 1m;