缓存技术

缓存技术

为什么要使用缓存

缓存位置:缓存到客户端\缓存到服务器端\缓存到代理服务器

 

 

页面缓存

 

ASPX页面添加OutPutCach指令

 

OutputCache指令必须至少包含:DurationVaryByParam两个参数.

Duration:用于设置页面缓存的失效时间(以秒为单位)

VaryByParam:根据客户端PostGet方式发送的请求参数不同,缓存不同的页面结果.如果提交的参数包含多个,那么参数与参数之间用分号(;)隔开.

注意:如果不需要根据任何条件来缓存页面,那么只需要将VaryByParam属性设置为none.

下面的示例演示了如何根据不同的查询条件缓存不同的页面结果:

 

 

页面局部缓存

只缓存页面的一部分区域

方案一:控件缓存

此种情况适用于页面中部分区域很少或基本不会更新.具体做法就是:将这部分区域做成用户控件,在用户控件中添加缓存指令(OutputCache).

 

 

 

 

方案二:缓存后替换

方案二正好和方案一适用的情况相反.具体实现就是使用服务器控件:Substitution.

该控件使用要点:

1. 设置其MethodName属性(该属性的值为后台的一个C#方法名称).

2. 该方法必须是静态方法

3. 该方法必须返回一个string类型的结果(string的值就是界面上要显示的内容)

4. 该方法包含一个类型为HttpContext的参数

(通过HttpContext可以获取Response\Request\Server\Session)

 

 

缓存业务数据与缓存依赖

缓存业务数据是指将系统中频繁使用的业务数据缓存到内存中,以便在以后随时使用.(IIS重启可能会导致缓存的业务数据丢失).缓存中可以存储任何类型的数据(object).并且是以键值对的形式存储.

缓存业务数据主要使用了Cache,它提供了2个方法添加缓存

Cache.Add(..., ..., ..., ...)

Cache.Insert():提供了多种重载形式,可以供多种环境使用.

 

 

通过设置缓存的相对过期时间和绝对过期时间,可以解决内存中缓存的数据越来越多的问题.

 

 

如何解决数据源更新后, 缓存中的数据自动失效的问题?

 

 

数据库缓存依赖

当缓存的业务数据来源于数据库时,并且当数据库中相应的数据表记录发生改变(\\),缓存的业务数据也将自动失效,并从缓存中被移除.

 

实现数据库缓存以来有两种方法配置SQLServer

使用aspnet_regsql命令行工具,

使用SqlCacheDependencyAdmin()

 

例如:

aspnet_regsql -S "server" -E -d "database" ed  或者

aspnet_regsql -S "server" -E -d "database" -et -t "table"

如果是Sql验证的话要把-E换成,-U (用户名),-P (密码)

 

以下是该工具的命令参数说明:

-? 显示该工具的帮助功能;

-S 后接的参数为数据库服务器的名称或者IP地址;

-U 后接的参数为数据库的登陆用户名;

-P 后接的参数为数据库的登陆密码;

-E 使用当前登录用户的 Windows 集成认证进行身份验证。

-d 后接参数为对哪一个数据库采用SqlCacheDependency功能;

-C 连接数据库的连接字符串。如果您指定服务器(-S)和登录(-U-P,或 -E)信息,则此选项不是必需的,因为连接字符串已经包含这些信息。

-t 后接参数为对哪一个表采用SqlCacheDependency功能;

-ed 允许对数据库使用SqlCacheDependency功能;

-dd 禁止对数据库采用SqlCacheDependency功能;

-et 允许对数据表采用SqlCacheDependency功能;

-dt 禁止对数据表采用SqlCacheDependency功能;

-lt 列出当前数据库中有哪些表已经采用sqlcachedependency功能。

 

 

使用aspnet_regsql工具的实现步骤:

1. 打开命令行工具(vs2010命令行工具),并为相应的数据表启用SQL缓存依赖

aspnet_regsql  -S  ip  -U  sa  -P  123456  -ed  -d  databaseName  -et  -t  表名

aspnet_regsql  –S  ip  -E  -ed  -d  databaseName  -et  -t  表名

2. 在应用程序中打开配置文件(Web.config|app.Config)

system.web节点下,添加caching子节点

 

3. 在应用程序对缓存的数据使用数据库缓存依赖.

主要使用到了SqlCacheDependency.

 

强调:如果缓存的业务数据来源于多张数据表,那么需要使用AggregateCacheDependency.

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值