单页面缓存方案

单静态页缓存

解决问题场景

常见的缓存设计利用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

nginx+Memcached 缓存设计的更多相关文章

  1. nginx+memcached缓存图片

    1.nginx的配置如下: location ^~ /images/ {     set $memcached_key  "$uri"; #用URI作为key去memcached中 ...

  2. 受教了,memcache比较全面点的介绍,受益匪浅,适用memcached的业务场景有哪些?memcached的cache机制是怎样的?在设计应用时,可以通过Memcached缓存那些内容?

    基本问题 1.memcached的基本设置 1)启动Memcache的服务器端 # /usr/local/bin/memcached -d -m 10 -u root -l 192.168.0.200 ...

  3. windows使用nginx+memcached实现负载均衡和session或者缓存共享

    windows使用nginx+memcached实现负载均衡和session或者缓存共享 两台server server1:115.29.186.215 windows2008 64位操作系统 ser ...

  4. 【转】nginx+memcached构建页面缓存应用

    如需转载请注明出处: http://www.ttlsa.com/html/2418.html nginx的memcached_module模块可以直接从memcached服务器中读取内容后输出,后续的 ...

  5. 二、NOSQL之Memcached缓存服务实战精讲第一部

    1.Memcached是一套数据缓存系统或软件. 用于在动态应用系统中缓存数据库的数据,减少数据库的访问压力,达到提升网站系统性能的目的:Memcached在企业应用场景中一般是用来作为数据库的cac ...

  6. Memcached缓存瓶颈分析

    Memcached缓存瓶颈分析 获取Memcached的统计信息 Shell: # echo "stats" | nc 127.0.0.1 11211 PHP: $mc = new ...

  7. nginx+memcached+ftp上传图片+iis

    nginx+memcached+ftp上传图片+iis 自毕业以来,一直在现在公司做订餐系统的开发,那会儿没有口碑,没有饿了么,更别说美团外卖,百度外卖了...因为规模都比较小,都是一个服务器包含数据 ...

  8. Memcached缓存入门篇

    Asp.Net中使用Couchbase——Memcached缓存入门篇 前言 本文的主要目的就是简单的进行使用Memcached.这是Memchahed的官网http://memcached.org/ ...

  9. memcached缓存技术

    初学memcached缓存技术,如果文章写得不好还请谅解 应用环境:win7 实现环境:cmd,eclipse Memcached简洁而强大.它的简洁设计便于快速开发,减轻开发难度,解决了大数据量缓存 ...

随机推荐

  1. 测试EntityFramework,Z.EntityFramework.Extensions,原生语句在不同的查询中的表现。原来池化与非池化设定是有巨大的影响的。

    Insert测试,只测试1000条的情况,多了在实际的项目中应该就要另行处理了. using System; using System.Collections.Generic; using Syste ...

  2. JQuery中$.ajax()方法参数详解 及 async属性说明

    url: 要求为String类型的参数,(默认为当前页地址)发送请求的地址. type: 要求为String类型的参数,请求方式(post或get)默认为get.注意其他http请求方法,例如put和 ...

  3. Oracle 获取当前日期及日期格式

    http://blog.sina.com.cn/s/blog_6168ee920100l2ye.html Oracle 获取当前日期及日期格式 获取系统日期:  SYSDATE()   格式化日期:  ...

  4. 数组,集合分割函数,join()

    join函数定义如下: // 串联类型为 System.String 的 System.Collections.Generic.IEnumerable<T> 构造集合的成员,其中在每个成员 ...

  5. [LeetCode] Find Median from Data Stream 找出数据流的中位数

    Median is the middle value in an ordered integer list. If the size of the list is even, there is no ...

  6. Asp.net 后台添加CSS、JS、Meta标签

    Asp.net 后台添加CSS.JS.Meta标签的写法,我这里写成函数方便以后使用.如果函数放在页面类中, Page参数也可以不要. 首先导入命名空间 using System.Web.UI.Htm ...

  7. 【WPF】WPF 布局

    1.window 类继承自 ContentControl 所以内部只能有一个元素2.遵循原则:            不应显示的设置元素(控件)尺寸,可以通过设置最大最小尺寸来限制大小         ...

  8. redis学习笔记

    Redis 命令 Redis 命令用于在 redis 服务上执行操作. 要在 redis 服务上执行命令需要一个 redis 客户端.Redis 客户端在我们之前下载的的 redis 的安装包中. 语 ...

  9. Linq 单表城市级联

    var list = (from province in db.Areas && province.IsDel == join city in db.Areas on province ...

  10. shell及脚本4——shell script

    一.格式 1.1 开头 必须以 "# !/bin/bash"  开头,告诉系统这是一个bash shell脚本.注意#与!中间有空格. 二.语法 2.1 数值运算 可以用decla ...