如何通过使用 VisualC # .NET 在 ASP.NET 缓存

如何通过使用 VisualC # .NET 在 ASP.NET 缓存

注意:这篇文章是由无人工介入的自动的机器翻译系统翻译完成。这些文章是微软为不懂英语的用户提供的, 以使他们能够理解这些文章的内容。微软不保证机器翻译的正确度,也不对由于内容的误译或者客户对它的使用所引起的任何直接的, 或间接的可能的问题负责。
文章编号 : 323290
最后修改 : 2005年7月29日
修订 : 4.0

概要

本文介绍如何控制缓存的 Web页和 ASP.NET 中数据对象。 当缓存 Web页, 您避免进行以后请求时重建信息。 缓存是一个重要技术用于生成高性能和可缩放服务器应用程序。 您可以进行对页, 首请求时存储数据对象、 页或页面到内存的一部分。 您可以在 Web 服务器、, 代理服务器上或浏览器上存储这些项目。


更多信息

ASP.NET 提供方便方法来控制缓存。 您可使用 @ OutputCache 指令来控制页输出缓存 ASP.NET 中。 使用 HttpCachePolicy 类来存储任意对象, 如数据集, 对服务器内存。 您可以缓存存储应用程序如客户浏览器、 代理服务器和 MicrosoftInternet 信息服务 (IIS) 中。 通过使用 Cache-Control HTTP 头, 您可以控制缓存。

有关 ASP.NET 输出缓存, 请单击下列文章编号以查看 Microsoft 知识库中相应:
308375 (http://support.microsoft.com/kb/308375/) 如何控制通过使用 VisualC # .NET 在 ASP.NET 页面输出缓存

缓存 ASP.NET 页


您可用于缓存, OutputCache 指令或通过代码可缓存编程通过使用 VisualBasic.NET 或 VisualC # .NET。 OutputCache 指令包含 Location 属性。 此属性确定缓存项位置。 可指定以下位置:
任何 - 此输出缓存存储在参与请求, 中或其中处理请求服务器上客户端浏览器, 代理服务器 (或任何其他服务器) 上。 默认情况下, 选择 任何
客户 - 此输出缓存存储在客户端浏览器。
下游 - 在缓存能力设备 (非来源服务器) 参与请求存储输出缓存。
服务器 - 此 Web 服务器上存储输出缓存。
输出缓存此关闭 -。

以下是有关 OutputCache 指令和编程代码等效代码示例。
将存储在指定期间输出缓存

声明方法:
<%@ OutputCache Duration="60" VaryByParam="None" %>

编程方法:
Response.Cache.SetExpires(DateTime.Now.AddSeconds(60));
Response.Cache.SetCacheability(HttpCacheability.Public);
将存储在浏览器客户端发出请求输出缓存

声明方法:
<%@ OutputCache Duration="60" Location="Client" VaryByParam="None" %>

编程方法:
Response.Cache.SetExpires(DateTime.Now.AddSeconds(60));
Response.Cache.SetCacheability(HttpCacheability.Private);
将输出缓存存储在任何 HTTP 1.1 缓存能力设备包括代理服务器和客户端进行请求

声明方法:
<%@ OutputCache Duration="60" Location="Downstream" VaryByParam="None" %>

编程方法:
Response.Cache.SetExpires(DateTime.Now.AddSeconds(60));
Response.Cache.SetCacheability(HttpCacheability.Public);
Response.Cache.SetNoServerCaching();
将存储在 Web 服务器上输出缓存

声明方法:
<%@ OutputCache Duration="60" Location="Server" VaryByParam="None" %>

编程方法:
TimeSpan freshness = new TimeSpan(0,0,0,60); 
DateTime now = DateTime.Now; 
Response.Cache.SetExpires(now.Add(freshness)); 
Response.Cache.SetMaxAge(freshness); 
Response.Cache.SetCacheability(HttpCacheability.Server); 
Response.Cache.SetValidUntilExpires(true);
要缓存输出为每个 HTTP 请求到达与不同城市:

声明方法:
<%@ OutputCache duration="60" varybyparam="City" %>

编程方法:
Response.Cache.SetExpires(DateTime.Now.AddSeconds(60));
Response.Cache.SetCacheability(HttpCacheability.Public);
Response.Cache.VaryByParams["City"] = true;
对于 VaryByCustom 属性、 VaryByHeader 属性和 OutputCache 指令, 中 < A0 > VaryByParam < / A0 > 属性 HttpCachePolicy 类提供 VaryByHeaders 属性和 VaryByParams 属性和 SetVaryByCustom 方法。

关闭客户端和代理缓存

要关闭输出缓存在客户端位置和处代理位置, ASP.NET Web页面将 Location 属性值为无, 并将 < A0 > VaryByParam < / A0 > 值为 OutputCache 指令中无。 使用以下代码示例来关闭客户端和代理缓存。

声明方法:
<%@ OutputCache Location="None" VaryByParam="None" %>
编程方法:
Response.Cache.SetCacheability(HttpCacheability.NoCache);

缓存服务器内存中任意对象

ASP.NET 包括强大、 易用到缓存机制, 可用于存储对象, 需要大量服务器资源来内存中创建。 缓存 类实现此方法。 实例是对每个应用程序专用和生存期与相应的应用程序。 要通过使用 缓存 类, 缓存 ASP.Net 中任意对象请按照下列步骤操作:
1. 通过使用 VisualC # .NET 创建新 ASP.NETWeb 应用程序。
2. 默认情况下, 创建 WebForm 1 .aspx 。
3. 在 WebForm 1 , HTML 视图用以下示例代码替换现有代码:
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.SqlClient" %>

<html>

  <script language="C#" runat="server">

    void Page_Load(Object Src, EventArgs E) {

      DataView Source;

      // Retrieve the DataView object from Cache. If not exist, then add DataView object to the Cache.

      Source = (DataView)Cache["MyDataSet"];

      if (Source == null) {

        SqlConnection myConnection = new SqlConnection("Server=ServerName; database=Pubs; user id=UID; password=PWD;");
        SqlDataAdapter myCommand = new SqlDataAdapter("select * from Authors", myConnection);

        DataSet ds = new DataSet();
        myCommand.Fill(ds, "Authors");

        Source = new DataView(ds.Tables["Authors"]);
        Cache["MyDataSet"] = Source;

        CacheMsg.Text = "Dataset created explicitly";
      }
      else {
        CacheMsg.Text = "Dataset retrieved from cache";
      }

      // Binding the DataView object with DataGrid. 

      MyDataGrid.DataSource=Source;
      MyDataGrid.DataBind();
    }

  </script>

  <body>

    <form method="GET" runat="server">

      <h3><font face="Verdana">Caching Data</font></h3>

      <ASP:DataGrid id="MyDataGrid" runat="server"
        Width="700"
        BackColor="#ccccff"
        BorderColor="black"
        ShowFooter="false"
        CellPadding=3
        CellSpacing="0"
        Font-Name="Verdana"
        Font-Size="8pt"
        HeaderStyle-BackColor="#aaaad" />

      <p>

      <i><asp:label id="CacheMsg" runat="server"/></i>

    </form>
  </body>
</html>
与 SQL 服务器名称、 用户 ID 和密码 注意 替换值对于 ServerName 、, UID PWD 示例代码以便 SqlConnection 对象中。
4. 在 调试 菜单, 单击 开始 以运行该应用程序。

注意 重新应用, 时缓存对象是重新创建。
posted @ 2006-11-22 14:51  疯一样的自由  阅读(680)  评论(0编辑  收藏  举报