nginx之快取補充

2021-08-05 22:14:26 字數 1588 閱讀 8105

陳舊總比沒有強

nginx 內容快取的乙個非常強大的特性是:當無法從原始伺服器獲取最新的內容時,nginx 可以分發快取中的陳舊(stale,編者注:即過期內容)內容。這種情況一般發生在關聯快取內容的原始伺服器宕機或者繁忙時。比起對客戶端傳達錯誤資訊,nginx 可傳送在其記憶體中的陳舊的檔案。nginx 的這種**方式,為伺服器提供額外級別的容錯能力,並確保了在伺服器故障或流量峰值的情況下的正常執行。為了開啟該功能,只需要新增proxy_cache_use_stale 命令即可:

location /
按照上面例子中的配置,當 nginx 收到伺服器返回的 error,timeout 或者其他指定的 5xx 錯誤,並且在其快取中有請求檔案的陳舊版本,則會將這些陳舊版本的檔案而不是錯誤資訊傳送給客戶端。

快取微調

nginx 提供了豐富的可選項配置用於快取效能的微調。下面是使用了幾個配置的例子:

proxy_cache_path /path/to/cache levels=1:2 keys_zone=my_cache:10m max_size=10g inactive=60m

use_temp_path=off;

server

}

這些命令配置了下列的行為:

proxy_cache_revalidate指示 nginx 在重新整理來自伺服器的內容時使用 get 請求。如果客戶端的請求項已經被快取過了,但是在快取控制頭部中定義為過期,那麼 nginx 就會在 get 請求中包含 if-modified-since 字段,傳送至伺服器端。這項配置可以節約頻寬,因為對於 nginx 已經快取過的檔案,伺服器只會在該檔案請求頭中 last-modified 記錄的時間內被修改時才將全部檔案一起傳送。

proxy_cache_min_uses 該指令設定同一鏈結請求達到幾次即被快取,預設值為 1 。當快取不斷被填滿時,這項設定便十分有用,因為這確保了只有那些被經常訪問的內容會被快取。

proxy_cache_lock 被啟用時,當多個客戶端請求乙個快取中不存在的檔案(或稱之為乙個 miss),只有這些請求中的第乙個被允許傳送至伺服器。其他請求在第乙個請求得到滿意結果之後在快取中得到檔案。如果不啟用 proxy_cache_lock,則所有在快取中找不到檔案的請求都會直接與伺服器通訊。

跨多硬碟分割快取

使用 nginx 不需要建立乙個 raid(磁碟陣列)。如果有多個硬碟,nginx 可以用來在多個硬碟之間分割快取。下面是乙個基於請求 uri 跨越兩個硬碟之間均分快取的例子:

proxy_cache_path /path/to/hdd1 levels=1:2 keys_zone=my_cache_hdd1:10m max_size=10g

inactive=60m use_temp_path=off;

proxy_cache_path /path/to/hdd2 levels=1:2 keys_zone=my_cache_hdd2:10m max_size=10g inactive=60m use_temp_path=off;

split_clients $request_uri $my_cache

server

}

nginx 優化之快取技術

利用nginx 的expire 快取技術,可以將伺服器端的 的一些內容或資料儲存在客戶端,當客戶端再向伺服器端發出請求的時候,伺服器端可以給客戶端頭資訊,告訴它哪幾個檔案,是上次還沒過期的,或是現在還沒修改的,讓客戶端直接呼叫原來的快取。這樣可以大大減少對伺服器的資料請求。expire可寫在loca...

nginx四 之快取模組

提高 響應速度是 web應用不容忽視的目標,在之前動靜分離的基礎上,我們已經降低了後端伺服器壓力,提高了處理請求的效能,但是使用者請求的靜態資源是從硬碟讀取,相比記憶體的效能還有很大的提高 nginx 自帶的快取模組可以把靜態資源快取到記憶體中,提高了使用者請求靜態資源的速度,並且 nginx 自帶...

Nginx之頁面快取二

頁面快取 1 快取指令 nginx的快取配置比較直觀簡單,具體有下面幾個指令需要知道 a proxy cache path 格式 proxy cache path path levels numbers keys zone zone name zone size inactive time max ...