你目前正处于脱机状态,正在等待 Internet 重新连接

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

注意:这篇文章是由无人工介入的微软自动的机器翻译软件翻译完成。微软很高兴能同时提供给您由人工翻译的和由机器翻译的文章, 以使您能使用您的语言访问所有的知识库文章。然而由机器翻译的文章并不总是完美的。它可能存在词汇,语法或文法的问题,就像是一个外国人在说中文时总是可能犯这样的错误。虽然我们经常升级机器翻译软件以提高翻译质量,但是我们不保证机器翻译的正确度,也不对由于内容的误译或者客户对它的错误使用所引起的任何直接的, 或间接的可能的问题负责。

点击这里察看该文章的英文版: 315896
概要
本文演示了如何通过缓存整个 ASP.NET 页中的使用 @ OutputCache 页指令来改进 ASP.NET 应用程序的性能。您还可以 @ OutputCache 页指令缓存未的 ASP.NET 页的特定部分,尽管本文不演示此实现。

back to the top

要求

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

该技术的说明

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

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

back to the top

创建使用 @ 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 秒的时间段到期后就会更改标签。
back to the top

完成代码列表

<%@ 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。

back to the top

验证它工作的

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


警告:本文已自动翻译

属性

文章 ID:315896 - 上次审阅时间:05/31/2007 02:46:37 - 修订版本: 3.6

Microsoft ASP.NET 1.1, Microsoft ASP.NET 1.0

  • kbmt kbcaching kbhowtomaster kbio kbperformance kbwebforms KB315896 KbMtzh
反馈