nginx+Memcached 緩存設計


單頁面緩存方案

 

單靜態頁緩存

 

解決問題場景

常見的緩存設計利用System.Web.Cache 保存在內存內,效率高,可以減輕數據庫訪問的壓力。但是Web除了獲取數據之外,還有呈現頁面渲染,生成HTML很多功能都是消耗性能。在Web層也需要一個緩存,同時柔性設計,應用代碼不需要大變動。

 

 

架構

 

 

 

 

客戶端 訪問 /Report

Nginx 接收請求,判斷Memcached是否存在以該網址的Key,存在直接返回不經過IIS,不存在 ,透傳到IIS,並在Memacched中保存

 

優勢:memcached性能好,容易部署集群。相比靜態生成,容易管理,不會產生磁盤IO。柔性設計,應用代碼不需要任何修改。

問題:保存網頁默認有1M限制,key最大長度256位,最長過期30天

 

緩存策略:被動過期(設計固定過期時間);后台開線程 更新需要更新的網址;對URL增加#refresh配置成自動觸發更新

 

測試效果:


 


 

 

DEMO:

1.安裝memcached

解壓,在CMD 中運行 memcached.exe -d install 運行成功之后在windows服務中安裝了memcached服務,啟動之。

可以通過telnet 127.0.0.1 11211 判斷是否安裝啟動成功

2.運行一個ASPNET網站

該網址的/Report路徑下的頁面我們將會緩存300s

3.運行nginx (windows用於測試環境,使用VC2010編譯)

解壓,在當前目錄下conf的nginx.conf 進行配置

其中 proxy_pass http://localhost:48273/Report/;  為后端IIS代理地址,修改為實際地址端口

 

CMD中運行nginx.exe 將啟動nginx

4.訪問http://localhost:81/Report/ 查看緩存效果


 

擴展:

針對頁面存在個人信息可以使用CSI技術(頁面上用Ajax調用個人信息數據)或者使用ESI標簽配置Vanish服務器來解決 下回再解析

 

 所需測試windows版本nginx 和memcached

http://files.cnblogs.com/files/yuzukwok/NginxMemcached%E8%BD%AF%E4%BB%B6.rar

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM