asax用户控件上做的页面级缓存,如果手动移除呢 asax用户控件上做的页面级缓存,如果手动移除呢。我试着考虑过做个缓存依赖,但是发现似乎只能依赖文件,不能依赖KEY有没有什么方法,一调用直接移除掉。。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 “一调用直接移除掉”什么意思呢?举个依赖数据Cache的值的例子。假设网站中有一个class名字叫做“网站高兴指数”,这个类型有一个属性“Value”是int类型的。假设你的用户控件依赖于整个网站的高兴指数(以abc为key被保存在网站Cache中),只有当它改变时才使得缓存刷新,那么你的用户控件可以声明缓存依赖方式:<%@ OutputCache Duration="60000" VaryByParam="*" VaryByCustom="cache:abc" %>然后,在你的global.asax中写: public override string GetVaryByCustomString(HttpContext context, string custom) { if (custom == "cache:abc") { HttpContext h = HttpContext.Current; object x = h.Cache["abc"] as 网站高兴指数; if (x == null) return string.Empty; else return x.Value; } .................. }这就可以依赖于自己的全局缓存数据了。你还可以在这个自定义依赖程序中去查找数据库值(通过额外做一个轻量而快速的数据库查找来避免后续生成用户控件而进行的一大堆数据库查找和控件解析动作是很值得的),或者检查服务器运行状况(不过根据这个来控制缓存刷新有点奇怪,这是我随便想出来的),等等。VaryByParam、VaryByControl等属性设置,与VaryByCustom是同时起作用的,是“AND”关系,你可以都使用上。其最根本的,是VaryByCumsom,你可以通过自己写程序来完成别的属性所标记的所有功能。 哦,随手写的: return x.Value;似乎应该写为 return x.Value.ToString(); 嘿!还有一个object应该写为强类型的。 public override string GetVaryByCustomString(HttpContext context, string custom) { if (custom == "cache:abc") { 网站高兴指数 x = context.Cache["abc"] as 网站高兴指数; if (x == null) return string.Empty; else return x.Value.ToString(); } return base.GetVaryByCustomString(context, custom); }语法问题自己改一下吧,意思理解了就好。 请教个URL导向的问题,是我基础太差吗?求解释 用iframe传值的问题 简单的js问题,求一个简单语句,一时想不起来 请教.net部署的问题 一条简单的sql查询语句,送分了 请教prompt的使用 如何将含"'"文本存入SQL数据库,并且读取后以正确的格式显示? 怎样实现组合框效果?重分相酬! 很菜的问题:vb的left(str,10),right(str10)在c#是什么?? 关于DataGrid中的编辑功能的问题 asp:Menu控件换行的问题 散分~~ 下班后发现住处被盗,刚发的工资,丢了一个月的工资,郁闷
public override string GetVaryByCustomString(HttpContext context, string custom)
{
if (custom == "cache:abc")
{
HttpContext h = HttpContext.Current;
object x = h.Cache["abc"] as 网站高兴指数;
if (x == null)
return string.Empty;
else
return x.Value;
}
..................
}
这就可以依赖于自己的全局缓存数据了。你还可以在这个自定义依赖程序中去查找数据库值(通过额外做一个轻量而快速的数据库查找来避免后续生成用户控件而进行的一大堆数据库查找和控件解析动作是很值得的),或者检查服务器运行状况(不过根据这个来控制缓存刷新有点奇怪,这是我随便想出来的),等等。VaryByParam、VaryByControl等属性设置,与VaryByCustom是同时起作用的,是“AND”关系,你可以都使用上。其最根本的,是VaryByCumsom,你可以通过自己写程序来完成别的属性所标记的所有功能。
{
if (custom == "cache:abc")
{
网站高兴指数 x = context.Cache["abc"] as 网站高兴指数;
if (x == null)
return string.Empty;
else
return x.Value.ToString();
} return base.GetVaryByCustomString(context, custom);
}语法问题自己改一下吧,意思理解了就好。