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

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

 

posted @ 2015-07-14 15:22  kwok.io  阅读(1721)  评论(5编辑  收藏  举报