單頁面緩存方案
單靜態頁緩存
解決問題場景
常見的緩存設計利用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