E客开发团队-互联网架构提供服务商
设为首页 设为首页  加入收藏 加入收藏  联系我们 联系我们 
  • 首  页
  • 关于我们
  • eFrameWork框架
  • 案例鉴赏
  • 网站模板
  • 技术文档
  • 帮助中心
  • EKECMS下载
  • 在线留言
  • 联系我们
帮助中心更多...
  • 企业网站建设的重要性
  • 企业网站建设准则
  • 企业网站如何定位
  • 企业为什么要建设网站?
  • 专业术语解释
  • 选择E客开发团队有哪些优势?
  • 做网站应该注意哪些问题?
  • 做网站有哪些费用?








首 页 -> 技术文档 -> ASP.NET 中通过使用 Visual C#.net 的高速缓存

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

作者.中国E客  日期.2012-05-10  来源.www.eketeam.com  浏览.


概要
本分步指南介绍如何控制缓存的 Web 页和 ASP.NET 中的数据对象。当缓存 Web 页时,您避免进行更高版本的请求时重新创建信息。缓存是用于生成高性能和可缩放的服务器应用程序的一种重要技术。当您第一次请求页时,您可以将存储数据对象、 页面,或到内存页的一部分。您可以将这些项目存储在 Web 服务器上、 上一个代理服务器或在浏览器上。
ASP.NET 提供了更容易的方法来控制缓存。可以使用 @ OutputCache 指令来控制在 ASP.NET 缓存页输出。HttpCachePolicy 类用于存储诸如服务器内存的数据集这样的任意对象。您可以将缓存存储在应用程序 (如客户端浏览器、 代理服务器和 Microsoft Internet Information Services (IIS) 中。通过缓存控制 HTTP 标头中,您可以控制缓存。
高速缓存 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>
    注意 替换值的 ServerName、 UID,和 PWDSqlConnection 对象的示例代码中使用您的 SQL Server 名称、 用户 ID 和密码。
  4. 在 调试 菜单上单击 $ 开始 以运行该应用程序。

    注意当您重新启动该应用程序时,高速缓存对象是重新创建。

注意:更新内容时删除缓存的方法如:
HttpResponse.RemoveOutputCacheItem("/Default.aspx");


  • 上一篇:常用数据库连接字符串汇总
  • 下一篇:解决访问量大的数据库模型
【返回】 【顶部】 【关闭】

 ↓评论信息
暂时还没有评论!
 ↓发表评论
Name 您的姓名
Email 电子邮件

Comment 评论内容


Auth Code 验证码
 *


评论内容不能超过150个字符
 *  

所有评论只代表网友个人观点,不代表本站观点。请各位遵纪守法并注意语言文明。

CopyRight © 2010-2018 All EkeTeam.com rights reserved Template designed Technology report by EKETEAM. E客开发团队·官方网站 版权所有 
备案编号:滇ICP备18000718号-2