ASP.NET 提供了更容易的方法来控制缓存。可以使用
@ OutputCache 指令来控制在 ASP.NET 缓存页输出。
HttpCachePolicy 类用于存储诸如服务器内存的数据集这样的任意对象。您可以将缓存存储在应用程序 (如客户端浏览器、 代理服务器和 Microsoft Internet Information Services (IIS) 中。通过缓存控制 HTTP 标头中,您可以控制缓存。
有关 ASP.NET 输出缓存的详细信息单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
您可以使用缓存, @ OutputCache 指令,或者您可以以编程方式通过代码通过缓存使用 Visual Basic.net 或 Visual C#.net。 @ OutputCache 指令包含一个 位置 属性。此属性确定缓存项的位置。您可以指定在以下位置:
以下是 @ OutputCache 指令和等效的编程代码的代码示例。
有关 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;
关闭客户端和代理服务器缓存
要关闭输出缓存的 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>
- 在 调试 菜单上单击 $ 开始 以运行该应用程序。