如何在 ASP.NET 中通过使用 Visual C#.net 的高速缓存

本文详细介绍了ASP.NET中缓存控制的方法,包括@OutputCache指令、HttpCachePolicy类及HTTP缓存控制,提供了缓存策略的声明性和编程方法,并展示了如何在服务器内存中存储任意对象。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

ASP.NET 提供了更容易的方法来控制缓存。可以使用 @ OutputCache 指令来控制在 ASP.NET 缓存页输出。 HttpCachePolicy 类用于存储诸如服务器内存的数据集这样的任意对象。您可以将缓存存储在应用程序 (如客户端浏览器、 代理服务器和 Microsoft Internet Information Services (IIS) 中。通过缓存控制 HTTP 标头中,您可以控制缓存。

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

高速缓存 ASP.NET 页


您可以使用缓存, @ OutputCache 指令,或者您可以以编程方式通过代码通过缓存使用 Visual Basic.net 或 Visual C#.net。 @ OutputCache 指令包含一个 位置 属性。此属性确定缓存项的位置。您可以指定在以下位置:
  • 任何-这将在输出缓存存储在客户端的浏览器,代理服务器 (或任何其他服务器) 上参与该的请求中或处理请求在服务器上。默认状态下,所有 选择。
  • 客户端-这将输出缓存存储在客户端的浏览器中。
  • Downstream-此存储中任何缓存功能的设备 (而不是源服务器) 参与请求的输出缓存。
  • 服务器-这将在输出缓存存储在 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 指令中的 VaryByParam 属性,HttpCachePolicy 类提供了 VaryByHeaders 属性和 VaryByParams 属性和 SetVaryByCustom 方法。

关闭客户端和代理服务器缓存

要关闭输出缓存的 ASP.NET 网页在客户端的位置和代理的位置设置 位置 属性值为 ,然后 VaryByParam 值设置为 @ OutputCache 指令中。使用下面的代码示例关闭客户端和代理服务器缓存。

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

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

ASP.NET 包括一个功能强大的、 易于使用的缓存机制,可用于存储需要大量的服务器资源,在内存中创建的对象。 缓存 类实现此方法。是专用于每个应用程序实例和生存期绑定到相应的应用程序。通过使用 缓存 类缓存在 ASP.Net 中的任意对象,请按照下列步骤操作:
  1. 通过使用 Visual C#.net 中创建新的 ASP.NET Web 应用程序。
  2. 默认状态下,创建 WebForm1.aspx
  3. WebForm1.aspx 的 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> 
    注意 替换值的 ServerNameUID,和 PWDSqlConnection 对象的示例代码中使用您的 SQL Server 名称、 用户 ID 和密码。
  4. 调试 菜单上单击 $ 开始 以运行该应用程序。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值