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;
关闭客户端和代理服务器缓存
要关闭输出缓存的 ASP.NET 网页在客户端的位置和代理的位置设置 位置 属性值为 无,然后 VaryByParam 值设置为 无@ OutputCache 指令中。使用下面的代码示例关闭客户端和代理服务器缓存。
声明性方法:
<%@ OutputCache Location="None" VaryByParam="None" %>
编程的方法:
Response.Cache.SetCacheability(HttpCacheability.NoCache);
缓存在服务器内存中的任意对象
ASP.NET 包括一个功能强大的、 易于使用的缓存机制,可用于存储需要大量的服务器资源,在内存中创建的对象。缓存 类实现此方法。是专用于每个应用程序实例和生存期绑定到相应的应用程序。通过使用 缓存 类缓存在 ASP.Net 中的任意对象,请按照下列步骤操作:
- 通过使用 Visual C#.net 中创建新的 ASP.NET Web 应用程序。
- 默认状态下,创建 WebForm1.aspx。
- 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>
- 在 调试 菜单上单击 $ 开始 以运行该应用程序。
注意当您重新启动该应用程序时,高速缓存对象是重新创建。
注意:更新内容时删除缓存的方法如:
HttpResponse.RemoveOutputCacheItem("/Default.aspx");
- 上一篇:常用数据库连接字符串汇总
- 下一篇:解决访问量大的数据库模型
↓评论信息
暂时还没有评论!
↓发表评论