脚本宝典收集整理的这篇文章主要介绍了ASP.NET 4中的可扩展输出缓存(可以缓存页面/控件等),脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
输出缓存的前世今生 ASP.NET 1.0引入输出缓存的概念,这使得
开发者可以缓存页面、控件、控制器以及HTTP响应的输出到内存中。
在后续的Web请求,ASP.NET就可以使用缓存中的内容更快响应。
ASP.NET的输出缓存系统足够灵活,使得我们可以根据不同的查询字符串
或者表单post参数来缓存不同版本的内容。例如
test.aspx?category=Vegerable 和 test.aspx?category.aspx?category=Meat。它也允许我们根据浏览器类型或者用户语言偏好来缓存不同版本的内容。比如你可以为应用的手机版本缓存一份数据而为
桌面版本缓存另外一份。
我们也可以通过配置ASP.NET来为缓存项设置特定的缓存时间(如1分钟)。我们也可以配置ASP.NET的缓存项根据外部事件动态更新缓存(比如
数据库数据更新)。
但是ASP.NET V1到ASP.NET V3.5都只允许内存缓存。
ASP.NET 4输出缓存扩展 ASP.NET 4扩展了输出缓存使得我们可以配置一个或多个输出缓存
PRovider(output cache providers)。输出缓存provider可以使用任意存储机制来持久化输出缓存内容。这使得我们可以把缓存内容存在本地或者远程磁盘、数据库、
云端或者分布式缓存引擎中(如memcached或者veloc
ITy)。
我们可以通过集成ASP.NET中的
System.Web.Caching.OutputCacheProvider类来定制自己的输出缓存provider。然后我们重4个公共方法来实现添加/移除/检索/更新缓存内容(每一个缓存项都必须通过一个唯一的key来标识)。然后我们将这个自定制的输出缓存provider注册到web.
config文件中,如下:
&nbs
p;在上面,我添加了一个输出缓存provider,名叫S
ampleCache,它由OutputCacheSample.dll程序集中的ScottOutputCache类实现。我同时也设置了ASP.NET的默认输出缓存provider为SampleCache,即通过上面的defaultProvider。
现在,每当我在一个aspx页面添加下面的指令,
页面内容就会通过ScottOutputCache缓存:
<%@ OutputCache Duration="60"
VARyByParam="None" %>类似的,如果我给一个action添加[OutputCache]属性,内容页将通过ScottOutputCache缓存:
[OutputCache(Duration=60)]
p
ublic ActionResult
browse(string category)
{
return View();
}
定制使用哪个输出缓存Provider 上面我只提供了一个默认的SampleCache输出缓存Provider。而开发人员实际上可以根据每个请求动态选择输出缓存Provider的。例如我们可以为首页和Top 10页面使用ASP.NET内置的内存provider(它超级迅速,因为内容存在内存中),而把不常用的请求页面缓存到磁盘。
我们可以通过重载应用的Global.a
SAX的GetOutputCacheProviderName()来实现上面的要求:
public class Global: System.Web.HttpApplication
{
public
override string GetOutputCacheProviderName(HttpContext context)\
{
if(context.Request.Path.EndsWith("Home.aspx")
{
return "AspNetInternalProvider";
}
else
{
return base.GetOutputCacheProviderName(context);
}
}
}
这样我们单独为Home.aspx页面使用ASP.NET的内存缓存provider,而其他请求使用web.config中配置的缓存provider。
脚本宝典总结
以上是脚本宝典为你收集整理的ASP.NET 4中的可扩展输出缓存(可以缓存页面/控件等)全部内容,希望文章能够帮你解决ASP.NET 4中的可扩展输出缓存(可以缓存页面/控件等)所遇到的问题。
如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。