Robin's Blog

记录 积累 学习 成长

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

http://support.microsoft.com/kb/323290/zh-cn

注意:这篇文章是由无人工介入的微软自动的机器翻译软件翻译完成。微软很高兴能同时提供给您由人工翻译的和由机器翻译的文章, 以使您能使用您的语言访问所有的知识库文章。然而由机器翻译的文章并不总是完美的。它可能存在词汇,语法或文法的问题,就像是一个外国人在说中文时总是可能犯这样的错误。虽然我们经常升级机器翻译软件以提高翻译质量,但是我们不保证机器翻译的正确度,也不对由于内容的误译或者客户对它的错误使用所引起的任何直接的, 或间接的可能的问题负责。如果您发现了错误并希望帮助我们提高机器翻译技术,请完成文章末尾的在线调查。
文章编号 : 323290
最后修改 : 2007年3月27日
修订 : 4.2

概要

本文介绍如何控制缓存的 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 on 2009-05-25 14:07  Robin99  阅读(835)  评论(0编辑  收藏  举报