nginx的http_proxy模組,可以實現類似於 squid的快取功能、
nginx對客戶已經訪問過的內容在nginx伺服器本地建立副本
,這樣在一段時間內再次訪問該資料,就不需要通過nginx伺服器再次向後端伺服器發出請求,所以能夠減少nginx伺服器與後端伺服器之間的網路流量,減輕網路擁塞,同時還能減少資料傳輸延遲,提高使用者訪問速度。
同時,當後端伺服器當即時,nginx服務上的副本資源還能夠回應相關的使用者請求,提高後端伺服器的健壯性。
proxy_cache_path
:ngxin使用該引數指定快取位置。
proxy_cache
:該引數為之前的快取名稱。
proxy_cache_path
:兩個必填引數,
第乙個:快取目錄。
第二個:keys_zone指定快取名稱和占用記憶體空間的大小。
注:例項中的10m是對記憶體中快取內容元資料資訊大小的限制,如果想限制快取總量大小,需要用max_size引數。
nginx缺省會快取所有的get和head方法的請求結果,快取的key預設使用請求字串。
自定義key,例如:proxy_cache_key "$host$request_url$cookie_user"
指定請求至少被傳送了多少次以上時才快取,可以防止低頻請求被快取。
例如:proxy_cache_min_user 5
;
指定哪些方法的請求被快取
例如:proxy_cache_methods get head post;
預設情況下, 快取的內容是長期保留的,除非快取的總量超出限制。可以指定快取有效時間。例如:
響應狀態碼為200 302時,10分鐘有效 例如:proxy_cache_valid 200 302 10m;
對應任何狀態碼,5分鐘有效,例如:proxy_cache_valid 5m;
proxy_cache_bypass
:該指令來自原伺服器而不是快取。
例如:proxy_cache_bypass $cookie_nocache $arg_nocache$arg_comment
;
如果任何乙個引數值不為空,或者不等於0,nginx就不會直接查詢快取,直接進行****。
網頁的快取是由http訊息頭中"cache-control
"來控制的,常見的取值有private、 no-cacahe、 max-age 、must-revalidate等,預設為private。起作用根據不同的重新訪問方式分為以下幾種情況。
cache-directive
說明public
所有內容都將被快取(客戶端和**伺服器都可快取)
private
內容只快取到私有快取中(僅客戶端可以快取,**伺服器不可快取)
no-cache
no-store
所有內容都不會被快取到快取或internet臨時檔案中
must-revalidation/proxy-revalidation
如果快取的內容失效,請求必須傳送到伺服器/**以進行重新驗證
max-age=*** (*** is numeric)
快取的內容將在***秒後失效,這個選項只在http1.1可用,並如果 和last-modified一起使用時,優先順序較高
小結:解決這些問題後,nginx的快取也就基本配置完成了。新請求--存不存--存多久---繼續
web快取簡介
1.把內容快取到磁碟上 1 某些框架模板的頁面快取功能,例如smarty,zend framework 快取等等 這些的缺點是你必須用到這些框架或是模板,這也會帶來一些效能的開銷。其實也可以自己寫個簡單的快取方法。2 直接將變化不是很頻繁的內容靜態化,定期更新,靜態檔案的請求速度和消耗資源都遠小於動...
Nginx 快取控制
nginx 有好幾個引數控制快取,以nginx快取檔案作為例子。第一,快取池 proxy cache path var cache nginx proxy cache levels 1 2 keys zone static 50m max size 10g inactive 3d 這個引數控制快取池...
nginx快取設定
目的 快取nginx伺服器的靜態檔案。如css,js,htm,html,jpg,gif,png,flv,swf,這些檔案都不是經常更新。便於快取以減輕伺服器的壓力。實現 nginx proxy cache可以將使用者的請快取到本地乙個目錄,當下乙個請求時可以直接調取快取檔案,就不用去後端伺服器去取檔...