超级简单:ASP.NET输出缓存

简介:

ASP.NET缓存通过在内存中存储页面输出来构建一个高性能的,可伸缩的asp.net web应用程序。在随后的请求中,网页代码不用执行,直接使缓存的输出用于服务的请求。在本文中,我们专注于ASP.NET页面输出缓存。

     这只是在一站式开发技术框架中Silverlight样例的一部分,你能从http://cfx.codeplex.com/上获得更多的例子。

    Microsoft All-In-One Code Framework ,微软通过典型的三种流行的编程语言(Visual C#,VB.NET和Visual C++)编写代码示例代码来描绘微软主要的开发技术。每个示例是精心挑选,组成的,并提供测试,或使用的编码方案。

    默认情况下,我们去请求一个ASP.NET 站点,每次请求都将进行多步处理的。 例如页面的初始化,加载,渲染等等。这样会消耗大量的服务器资源。考虑以下情形:许多客户浏览ASP.NET的新闻网页和新闻网站的页面几个小时都不会改变 。基于共同的路线,多个客户的几乎在同一时间在请求同一个新闻网页,ASP.NET将执行相同的代码生成多次相同新闻。这是一种浪费资源的过程。因此,我们开始考虑能否生成一次响应,它能服务于多个客户。答案就是缓存。

    ASP.NET提供了两个缓存的方法。输出缓存(包括页面级缓存和用户控件级缓存)和缓存API 。在本文中,我们将讨论输出缓存。输出缓存的优点是易于实现,并在大多数情况下是足够的。它只是在内存中保存了发送给客户端输出和后续请求答辩书的副本,然后用缓存的输出,直到缓存过期的反应,然后,直到缓存过期,后续的请求响应缓存输出。这令人难以置信的提高ASP.NET Web应用程序的性能。
    对于ASP.NET输出缓存,ASP.NET使用@ OutputCache指令,宣布许多属性来控制ASP.NET页或页面上的用户控件的 输出缓存的策略。
代码

     在本文中,我们将介绍@ OutputCache的 DurationVaryByCustomVaryByParam, 和VaryByControl属性来缓存我们的页面输出 ,对于其它属性,您可以参考:http://msdn.microsoft.com/en-us/library/hdxfb6cy.aspx.

下面演练一步一步如何使用它们。在演示中,我们使用的日期时间,以确定页面是否被缓存。(在页面加载事件中,我们将日期时间写在一个名字为“lblResult”的控件中)

1、Duration属性:

在ASPX标记中添加@OutputCache指令,并指定到期时间。在这种情况下,我们分配给它10秒。例如: OutputCache Duration="10"  VaryByParam="none"。

运行ASP.NET Web应用程序,推出这个页面。在页面重新加载时候,我们将看到在网页上的日期时间10秒内不会改变。

代码

 2、VaryByControl属性

拖放一个DropDownList到页面中和给它增加3个item。

在ASPX标记中添加@ OutputCache指令,并指定到期时间和VaryByControl属性。 例如: OutputCache Duration="1000" VaryByControl="ddlOption".

运行ASP.NET Web应用程序和启动这个页面,我们可以看到,不同item有其相应的缓存。

代码

 3、VaryByCustom属性

在ASPX标记中添加@ OutputCache指令,并指定到期时间和设置VaryByControl属性为“browser”。For example: OutputCache Duration="1000"VaryByCustom="browser"VaryByParam="none"。

运行ASP.NET Web应用程序和使用IE和Firefox(不同的浏览器和版本)启动这个页面,我们将看到,对于不同的浏览器,缓存是不同的。

 

代码

  4、VaryByParam属性

在ASPX标记中添加@ OutputCache指令,并指定到期时间和指定VaryByParam属性为“id”。例如: OutputCache Duration="1000" VaryByParam="id"。

运行ASP.NET Web应用程序和启动这个网页, 通过使用QueryString “id”。,你可以请求使用不同的值。

~/OutputCacheWithParam.aspx?id=1
~/OutputCacheWithParam.aspx?id=2 >

 

代码

 原文:http://www.codeproject.com/KB/web-cache/OutputCache.aspx





本文转自麒麟博客园博客,原文链接:http://www.cnblogs.com/zhuqil/archive/2010/01/01/1637155.html,如需转载请自行联系原作者

相关文章
|
2月前
|
SQL 缓存 开发框架
分享一个 .NET EF6 应用二级缓存提高性能的方法
分享一个 .NET EF6 应用二级缓存提高性能的方法
|
2月前
|
缓存 NoSQL Java
【Azure Redis 缓存 Azure Cache For Redis】Redis出现 java.net.SocketTimeoutException: Read timed out 异常
【Azure Redis 缓存 Azure Cache For Redis】Redis出现 java.net.SocketTimeoutException: Read timed out 异常
|
2月前
|
缓存 NoSQL 网络协议
【Azure Redis 缓存】Redisson 连接 Azure Redis出现间歇性 java.net.UnknownHostException 异常
【Azure Redis 缓存】Redisson 连接 Azure Redis出现间歇性 java.net.UnknownHostException 异常
|
2月前
|
缓存 程序员
封装一个给 .NET Framework 用的内存缓存帮助类
封装一个给 .NET Framework 用的内存缓存帮助类
|
2月前
|
缓存 开发框架 .NET
看看 Asp.net core Webapi 项目如何优雅地使用内存缓存
看看 Asp.net core Webapi 项目如何优雅地使用内存缓存
|
2月前
|
存储 缓存 开发框架
看看 Asp.net core Webapi 项目如何优雅地使用分布式缓存
看看 Asp.net core Webapi 项目如何优雅地使用分布式缓存
|
12月前
|
缓存 开发框架 .NET
ASP.NET Core 缓存
Get新知识: 缓存相关概念:缓存的类型:总结:总的来说,私有缓存会减少网络带宽的需求,同时会减少从缓存到API的请求。因为私有缓存是存储在客户端浏览器的,对于请求来说,如果缓存还在有限期内,那么请求连网络请求都不会发出会直接在客户端浏览器获取到响应,这样就减少网络请求次数,同样也会减少API请求次数。而共享缓存不会节省缓存到API的网路带宽,但是它会减少请求到API的请求。因为共享缓存是...
47 0
ASP.NET Core 缓存
|
11月前
|
缓存 监控 NoSQL
一个.Net Core开源缓存中间件,让你更加简单、方便使用缓存
一个.Net Core开源缓存中间件,让你更加简单、方便使用缓存
185 0
|
存储 SQL 缓存
ASP.NET Core MVC 从入门到精通之缓存
ASP.NET Core MVC 从入门到精通之缓存
126 0
|
存储 缓存 开发框架
Asp.Net Core 2.1+的视图缓存(响应缓存)
Asp.Net Core 2.1+的视图缓存(响应缓存)
85 0