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 Duration="#ofseconds"
   Location="Any | Client | Downstream | Server | None | ServerAndClient "
   Shared="True | False"
   VaryByControl="controlname"
   VaryByCustom="browser | customstring"
   VaryByHeader="headers"
   VaryByParam="parametername" 
   VaryByContentEncoding="encodings"
   CacheProfile="cache profile name | ''"
   NoStore="true | false"
   SqlDependency="database/table name pair | CommandNotification"
%>

在本文中,我们将介绍@ OutputCache的 Duration, VaryByCustom, VaryByParam, 和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秒内不会改变。

代码

<%@ OutputCache Duration="10" VaryByParam="none" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>OutPutCacheWithDuration</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:Label ID="lblResult" runat="server"></asp:Label>
        <br />
        <br />
        <asp:Button ID="btnPostBack" runat="server" Text="Post Back"  />
        <p>
            The page will be cached 10s, and then you can 
                   click Button to update datetime.
        </p>
    </div>
    </form>
</body>
</html>

2、VaryByControl属性

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

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

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

代码

<%@ OutputCache Duration="1000" VaryByControl="ddlOption" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>OutPutCacheWithVaryByControl</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:Label ID="lblResult" runat="server"></asp:Label>
        <br />
        <br />
        <asp:DropDownList ID="ddlOption" runat="server" AutoPostBack="True" 
                   OnSelectedIndexChanged="ddlOption_SelectedIndexChanged">
            <asp:ListItem Selected="True">Option One</asp:ListItem>
            <asp:ListItem>Option Two</asp:ListItem>
            <asp:ListItem>Option Three</asp:ListItem>
        </asp:DropDownList>
        <p>
            The page will be rendered from cache basing 
            on the selected item of DropDownList. 
            The different item has corresponding cache. 
        </p>
    </div>
    </form>
</body>
</html>

3、VaryByCustom属性

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

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

代码

<%@ OutputCache Duration="1000" VaryByCustom="browser" VaryByParam="none" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>OutPutCacheWithVaryByCustom</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:Label ID="lblResult" runat="server"></asp:Label>
        <br />
        <br />
        <asp:Button ID="btnPostBack" runat="server" Text="Post Back" />
        <p>
            The page will be rendered from cache basing 
            on the version of browser, such as IE and FireFox.
        </p>
    </div>
    </form>
</body>
</html>

4、VaryByParam属性

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

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

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

<%@ OutputCache Duration="1000" VaryByParam="id" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>OutPutCacheWithVaryByParam</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:Label ID="lblResult" runat="server"></asp:Label>
        <p>
            The page will be rendered from cache until 
            the value of QueryString named "id" is
            changed or Duration is expiration.
        </p>
    </div>
    </form>
</body>
</html>

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

(全文完)


以下为广告部分

您部署的HTTPS网站安全吗?

如果您想看下您的网站HTTPS部署的是否安全,花1分钟时间来 myssl.com 检测以下吧。让您的HTTPS网站变得更安全!

SSL检测评估

快速了解HTTPS网站安全情况。

安全评级(A+、A、A-...)、行业合规检测、证书信息查看、证书链信息以及补完、服务器套件信息、证书兼容性检测等。

SSL证书工具

安装部署SSL证书变得更方便。

SSL证书内容查看、SSL证书格式转换、CSR在线生成、SSL私钥加解密、CAA检测等。

SSL漏洞检测

让服务器远离SSL证书漏洞侵扰

TLS ROBOT漏洞检测、心血漏洞检测、FREAK Attack漏洞检测、SSL Poodle漏洞检测、CCS注入漏洞检测。

超级简单:ASP.NET输出缓存相关推荐

  1. 超级简单系列(收藏)

    我不是技术牛人,但是基本文章上总是发首页,为什么呢?因为我每次写文章都很努力,希望我的努力会给你带来收获,明年会更加努力滴.明天就回家了,在这里祝所有的园友们新春愉快.新的一年心想事成,梦想成真,祝博 ...

  2. 超级简单:一步一步教你创建一小型的asp.net mvc 应用程序

    超级简单:一步一步教你创建一小型的asp.net mvc 应用程序 这本教程中将帮助你创建一个小型的asp.net mvc示例. 在本教程中,我们将创建自己的 Model , View 和Contro ...

  3. 【翻译】ASP.NET 4中的可扩展输出缓存

    翻译自:http://weblogs.asp.net/scottgu/archive/2010/01/27/extensible-output-caching-with-asp-net-4-vs-20 ...

  4. ASP.NET 缓存技术(一)——启用页面输出缓存

    作者寄语:MSDN 是最好的老师,互联网是最智慧的生命体,分享是最重要的成长途径,技术的进步在于学习.实践和创新! 本系列所讲述的技术和展示的代码适用于 .NET Framework 4.0 和 II ...

  5. ASP.NET页面输出缓存知识

    最近因项目要求,需要研究ASP.NET缓存,可是查阅了书本,msdn,网上后有点失望,真是天下文章一大抄啊,大家讲来讲去都是那么几点,没有条理,没有重点,也没有心得,所以我决定自己来写一篇,当然,我是 ...

  6. ASP.NET页面缓存介绍

    尽管本文的作者写的很简单,但是相信通过这些文字,还是能对大家了解ASP.NET页面缓存有很大的帮助. 前几天遇到个问题,百思不得其解.后来查阅了一些资料心里才有了点思路.把自己遇到的问题记录下来希望能 ...

  7. asp.net中缓存的使用介绍一

    介绍: 在我解释cache管理机制时,首先让我阐明下一个观念:IE下面的数据管理.每个人都会用不同的方法去解决如何在IE在管理数据.有的会提到用状态管理,有的提到的cache管理,这里我比较喜欢cac ...

  8. 浅析ASP.NET页面缓存的几点体会

    尽管本文的作者写的很简单,但是相信通过这些文字,还是能对大家了解ASP.NET页面缓存有很大的帮助. 前几天遇到个问题,百思不得其解.后来查阅了一些资料心里才有了点思路.把自己遇到的问题记录下来希望能 ...

  9. ASP.NET MVC:缓存功能的设计及问题

    ASP.NET MVC:缓存功能的设计及问题 这是非常详尽的asp.net mvc中的outputcache 的使用文章. [原文:陈希章 http://www.cnblogs.com/chenxiz ...

  10. ASP.NET Core 缓存技术 及 Nginx 缓存配置

    前言 在Asp.Net Core Nginx部署一文中,主要是讲述的如何利用Nginx来实现应用程序的部署,使用Nginx来部署主要有两大好处,第一是利用Nginx的负载均衡功能,第二是使用Nginx ...

最新文章

  1. 解决:geom_path: Each group consists of only one observation. Do you need to adjust the group aesthetic
  2. 【BLE MIDI】MIDI 文件格式分析 ( FF 58 04 拍号 | 音符开指令 | 音符关指令 | 音轨结束标志 )
  3. span居div中_JavaScript-html Dom中的HTMLCollection和NodeList
  4. java 类一定要声明成public_类和对象练习题
  5. pcie 的function_PCIe扫盲——BDF与配置空间
  6. Android图片特效处理之图片叠加
  7. ros melodic控制真实机械臂之openmanipulator参考
  8. c语言中extern关键字_了解C语言中的extern关键字
  9. Android应用系列:双击返回键退出程序
  10. 高效使用使用SQL缓存依赖
  11. springMVC实现 MultipartFile 多文件上传
  12. Atitit 图像处理30大经典算法attilax总结
  13. linux jsp mysql_Linux JSP连接MySQL数据库
  14. 前端网络基础-应用层DNS协议
  15. Netty案例(二)之耗时任务的处理
  16. 关于 Python2 和 Python3 中的 Unicode 问题。
  17. 解决邮件客户端QQ Mail及Thunderbird无法登入Outlook的问题
  18. 实战项目:设计实现一个流程编排框架(分析)
  19. scp 解除链接问题的两个解决方案
  20. 中国FPGA芯片技术解析

热门文章

  1. POJ2356 Find a multiple 鸽巢原理
  2. Codeforces 160
  3. Linux和Docker常用命令
  4. linux IPC socket(2)
  5. r0~r15寄存器作用
  6. bootstrap 预定义样式风格
  7. 编译与运行、解释程序与编译程序
  8. Django之admin
  9. 如何把握好 transition 和 animation 的时序,创作描边按钮特效...
  10. 编程开发之--java多线程学习总结(4)