如何: 通过缓存页,在 ASP.NET 中提高性能

文章翻译 文章翻译
文章编号: 315896 - 查看本文应用于的产品
展开全部 | 关闭全部

本文内容

概要

本文演示了如何通过缓存整个 ASP.NET 页中的使用 @ OutputCache 页指令来改进 ASP.NET 应用程序的性能。您还可以 @ OutputCache 页指令缓存未的 ASP.NET 页的特定部分,尽管本文不演示此实现。

要求

下面的列表概述了建议的硬件、 软件、 网络的基础结构和服务包,您需要:
  • Microsoft Visual Studio.net
  • Microsoft Internet 信息服务器 (IIS) 4.0 或 Microsoft Internet Information Services (IIS) 5.0
本文假定您熟悉下列主题:
  • web 应用程序
  • Microsoft ASP.NET

该技术的说明

当您缓存信息时,您将信息放在内存中。通常情况下,当 IIS 收到页请求时, IIS 从硬盘读取该页,然后将该页发送。有时,IIS 可以自动将信息存储在内存中以提高性能。@ OutputCache 指令允许您在内存,存储页面即使该页面不符合条件的 IIS 使用来确定它保留在内存中有哪些信息。

例如对于访问数据库的网页是的时,将再次运行每个您浏览页面,以获取最新的数据。您在使用 @ OutputCache 指令时页保存的是在内存中对数据库的一个查询的结果,直到指定的时间段内过期。因此,您可以使用 @ OutputCache 指令以避免每次有人浏览网页时,查询数据库。这是非常有用的数据不会经常更改的。

创建使用 @ OutputCache 的 ASP.NET Web 应用程序

在这一节中,您将创建一个 ASP.NET Web 应用程序,它使用 @ OutputCache 页指令缓存在特定时间段内的页。
  1. 请按照下列步骤在 Visual Basic.net 中创建新的 ASP.NET Web 应用程序:
    1. 打开 Visual Studio.net。
    2. 文件 菜单上指向 新建,然后单击 项目
    3. 新建项目 对话框中单击在 项目类型Visual Basic 项目,然后单击 模板 下的 ASP.NET Web 应用程序
  2. 切换到 WebForm1.aspx 窗口中的 HTML 视图,然后 @ Page 指令后立即添加以下指令:
    <%@ OutputCache Duration="10" VaryByParam="none" %>
    						
    此代码将 @ OutputCache 指令的 工期 属性设置为 10 秒,以便为 10 秒缓存页面内容。此外,VaryByParam 属性包含的字符串,使您能够改变输出缓存基于用户定义的变量以分号分隔的列表。因此,前面的代码将 VaryByParam 设置为 ,此功能将在超出了本文中的范围。
  3. WebForm1.aspx HTML 视图中添加下面的代码之间开始和结束 <form>标记,以添加一个标签 控件,以在窗体:
    <asp:Label>
    Last cached: <%Response.Write(Now())%>
    </asp:Label>
    						
    ,以显示加载在页面的上一次使用该标签。在此标签值时,才能更改一次每隔 10 秒,而不管多少次刷新网页。
  4. 文件 菜单上单击 保存
  5. 生成 菜单上单击 生成解决方案
  6. 用鼠标右键单击页,然后单击 在浏览器中查看。请注意,将显示一个标签的显示当前时间。
  7. 多次刷新页面。请注意只有在 10 秒的时间段到期后就会更改标签。

完成代码列表

<%@ Page Language="vb" AutoEventWireup="false" Codebehind="WebForm1.aspx.vb" Inherits="WebApplication1.WebForm1"%>
<%@ OutputCache Duration="10" VaryByParam="none" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
    <head>
        <title>WebForm1</title>
        <meta name="GENERATOR" content="Microsoft Visual Studio.NET 7.0">
        <meta name="CODE_LANGUAGE" content="Visual Basic 7.0">
        <meta name="vs_defaultClientScript" content="JavaScript">
        <meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
    </head>
    <body MS_POSITIONING="GridLayout">
        <form id="Form1" method="post" runat="server">
        <asp:Label>
            Last Cached: <%Response.Write(Now())%>
        </asp:Label>
        </form>
    </body>
</html>
				
: 您可能需要根据要引用的项目和 Web 窗体名称的需要修改下面的代码行中的 Inherits 属性:
<%@ Page Language="vb" AutoEventWireup="false" Codebehind="WebForm1.aspx.vb" Inherits="WebApplication1.WebForm1"%>
				
的代码当前假定您的项目被命名为 WebApplication1 和 Web 窗体被命名为 WebForm1。

验证它工作的

  1. 打开多个浏览器窗口。
  2. 在每个窗口中浏览到.aspx 页,您如同最终用户。即使您不浏览至页在同一时间,请注意的所有窗口显示在同一时间为 10 秒持续时间。
  3. 10 的秒钟后浏览到或刷新.aspx 页。请注意所有窗口更新时间。



参考

有关详细的信息,请参阅以下 Microsoft 网站来:
ASP.NET 配置文件优化
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpguide/html/cpconaspoptimization.asp

ASP.NET 缓存功能
http://msdn2.microsoft.com/en-us/library/xsbfdd8c(vs.71).aspx

缓存的 ASP.NET 网页
http://msdn2.microsoft.com/en-us/library/06bh14hk(vs.71).aspx

@ OutputCache
http://msdn2.microsoft.com/en-us/library/hdxfb6cy(vs.71).aspx

属性

文章编号: 315896 - 最后修改: 2007年5月31日 - 修订: 3.6
这篇文章中的信息适用于:
  • Microsoft ASP.NET 1.1
  • Microsoft ASP.NET 1.0
关键字:?
kbmt kbcaching kbhowtomaster kbio kbperformance kbwebforms KB315896 KbMtzh
机器翻译
注意:这篇文章是由无人工介入的微软自动的机器翻译软件翻译完成。微软很高兴能同时提供给您由人工翻译的和由机器翻译的文章, 以使您能使用您的语言访问所有的知识库文章。然而由机器翻译的文章并不总是完美的。它可能存在词汇,语法或文法的问题,就像是一个外国人在说中文时总是可能犯这样的错误。虽然我们经常升级机器翻译软件以提高翻译质量,但是我们不保证机器翻译的正确度,也不对由于内容的误译或者客户对它的错误使用所引起的任何直接的, 或间接的可能的问题负责。
点击这里察看该文章的英文版: 315896
Microsoft和/或其各供应商对于为任何目的而在本服务器上发布的文件及有关图形所含信息的适用性,不作任何声明。 所有该等文件及有关图形均"依样"提供,而不带任何性质的保证。Microsoft和/或其各供应商特此声明,对所有与该等信息有关的保证和条件不负任何责任,该等保证和条件包括关于适销性、符合特定用途、所有权和非侵权的所有默示保证和条件。在任何情况下,在由于使用或运行本服务器上的信息所引起的或与该等使用或运行有关的诉讼中,Microsoft和/或其各供应商就因丧失使用、数据或利润所导致的任何特别的、间接的、衍生性的损害或任何因使用而丧失所导致的之损害、数据或利润不负任何责任。

提供反馈

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com