ASP.NET 缓存(四)--使用缓存键依赖项缓存页输出http://www.opent.cn/?action=show&id=191

当将页添加到输出缓存后,在超过了您在到期策略中指定的时间量之后,该页将被移除。有些时候,您要在到期之前从输出缓存中移除某个页或页的版本。例如,如果页显示易失数据(例如股票价格或温度),如果在该页到期之前数据已被更新,则该页将显示不正确的信息。

要解决该问题,ASP.NET 提供了 HttpResponse.AddCacheItemDependencyHttpResponse.AddCacheItemDependencies 方法,这些方法允许您缓存依赖于 Cache 对象(与该页所属的应用程序关联)中一项的页输出。

注意   通过调用 HttpResponse.RemoveOutputCacheItem 方法,可以从输出缓存中显式移除任何页。可以从 global.asax 文件,从已创建的自定义 ASP.NET 服务器控件或从页中执行该操作,具体取决于应用程序的需要。

AddCacheItemDependency 方法允许您在页和 Cache 中的单个项之间创建关系,而 AddCacheItemDependencies 方法允许您在页和 Cache 项的数组之间创建关系。当该页依赖的任何项更改或从应用程序 Cache 中移除时,都将使页输出无效并将其从输出缓存中移除。

注意   不能从 Web 窗体用户控件使用这些方法。

使缓存的页输出依赖于 Cache 项

  1. 以声明方式或编程方式指定缓存页输出的设置。有关更多信息,请参见设置页缓存的到期时间设置页的可缓存性缓存页的多个版本
  2. 在页的代码声明块或代码隐藏文件中,使用 Cache.Item 属性、Cache.Add 方法或 Cache.Insert 方法将项添加到 Web 应用程序的 Cache 对象中。
  3. 在页的代码声明块或代码隐藏文件中,使用 Response 对象语法调用 AddCacheItemDependencyAddCacheItemDependencies 方法,指定该页所依赖的缓存项。
    警告   若要使用这些方法,传递给它的参数必须是为 Cache.Item 属性、 Cache.Add 方法或 Cache.Insert 方法中指定的缓存项所指定的缓存键。

下面的示例假定应用程序包含一个温度组件。该组件使用 Cache.Insert 方法将温度放置在应用程序 Cache 中。

[C#]
Cache.Insert("Temperature.CurrentTemperature", currentTemperature);
[Visual Basic]
Cache.Insert("Temperature.CurrentTemperature", currentTemperature)

之后,下面的页代码(在代码声明块或代码隐藏文件中)获取存储在 Cache 中的当前温度,将其转换为字符串,然后显示它。然后,它使其输出缓存版本依赖于 Temperature.CurrentTemperature 键。从这时起,当温度组件更新温度时,便在输出缓存中刷新页版本。当随后请求该页时,该页将被重新放置在输出缓存中。

[C#]
int temperature = (int) Cache.Get("Temperature.CurrentTemperature");
LabelTemperature.Text = temperature.ToString();
Response.AddCacheItemDependency("Temperature.CurrentTemperature");
[Visual Basic]
Dim temperature as Integer
temperature = Cache.Get("Temperature.CurrentTemperature")
LabelTemperature.Text = temperature.ToString()
Response.AddCacheItemDependency("Temperature.CurrentTemperature") 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值