Web快取代理

无敌小鲁班發表於2024-07-08

目錄
  • 1.Web快取代理
    • (1)常見的Web快取代理應用
    • (2)資料庫快取代理:Redis、Memcached
  • 2.CDN 內容分發網路
    • (1)工作原理
    • (2)配置Web快取代理
    • (3)CDN的內容是如何獲取到的?

1.Web快取代理

作用:儲存一些之前給訪問過的,且可能要被再次訪問的靜態網頁資源物件,使客戶端可以直接從快取代理伺服器獲取資源,從而減少上游源伺服器的負載壓力,加快網站的整體訪問速度。
代理伺服器還可以代替客戶端去獲取源伺服器的資源,從而隱藏客戶端的真實地址。

(1)常見的Web快取代理應用

本地實現:Nginx、Squid、Varnish
雲環境遠端實現:CDN

(2)資料庫快取代理:Redis、Memcached

2.CDN 內容分發網路

作用:在最接近使用者的網路邊緣增加一層CDN快取代理伺服器,將源站點伺服器的內容釋出到CDN做快取,可以使使用者就近取得所需的內容,從而提高使用者訪問網站的響應速度。
總結一句話為CDN能夠給Web網站內容做快取,還可降低網路延遲。

(1)工作原理

先將源站點伺服器的靜態網頁資源快取到CDN節點上,使用者請求資源時,透過與DNS的配合,再根據使用者的IP地址和請求的URL,找到最靠近使用者的CDN節點,然後CDN節點會將資源資料快速地分發給使用者,使每使用者的請求不需要都從源站點伺服器獲取。從而避免了網路擁塞,降低了源站點伺服器的負載壓力,提高使用者訪問資源的速度和體驗。

(2)配置Web快取代理

20.0.0.100
20.0.0.110
20.0.0.130




20.0.0.110
20.0.0.130








20.0.0.100





Nginx 配置 快取代理
http { 
    ......            
proxy_cache_path  /data/nginx/cache  levels=1:2   keys_zone=my_cache:10m  max_size=10g   inactive=60m   use_temp_path=off;

    upstream XXXX {
	     server IP:PORT;     #定義上游源伺服器的IP和埠   
		 .....
	}

    server {
	    listen  IP:PROT;
		server_name 主機名;
		location 匹配路徑 {
		    proxy_cache  my_cache;          #指定快取共享記憶體區的名稱
			proxy_cache_valid  200  60m;    #指定有效快取的狀態碼  快取時間;
			proxy_cache_key $request_uri;   #指定快取資料的key為請求的URL
			add_header Nginx_Cache_Status $upstream_cache_status      #新增請求頭顯示快取狀態
		    proxy_pass http://XXXX;        #設定沒有命令快取時的代理轉發
			proxy_no_cache $自定義變數;      #透過判斷自定義變數是否有值來決定是否進行快取
		}	
	}
}

(3)CDN的內容是如何獲取到的?

1)讓使用者直接訪問資源,如果CDN有資源則可以命中快取並直接響應返回給使用者;如果沒有命中到快取則會將請求傳送給上游源站點伺服器獲取資源,並同步到CDN的快取中
2)對於熱點資源,可以先做快取預熱,再讓使用者訪問資源,即可命中CND中的快取並直接響應返回給使用者

相關文章