通过使用 Visual Basic.net 如何在 ASP.NET 中的缓存

文章翻译 文章翻译
文章编号: 811431 - 查看本文应用于的产品
展开全部 | 关闭全部

本文内容

概要

本分步指南介绍了控制 ASP.NET 网页和数据对象的缓存的方法。通过缓存,可以避免重新创建的信息,当您进行更高版本的请求时。缓存是用于生成高性能和可缩放的服务器应用程序的一种重要技术。在页的第一次请求,您可以将存储数据对象、 页面,或在内存中页面的部分。您可以将这些项目存储在 Web 服务器上,在代理服务器上或在浏览器上。

更多信息

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

有关 ASP.NET 输出缓存的其他信息请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
308516如何在 ASP.NET 中使用 Visual Basic.net 的管理页面输出缓存

高速缓存的 ASP.NET 网页

您可以通过 Visual 基本.net 或 Visual C#.net 缓存通过使用 @ OutputCache 指令或通过代码以编程方式。@ 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" %>

    编程做法:
    Response.Cache.SetExpires(DateTime.Now.AddSeconds(60))
    Response.Cache.SetCacheability(HttpCacheability.Server)
    
  • 缓存每个 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 基本.net 中创建新的 ASP.NET Web 应用程序。
  2. 默认状态下,创建 WebForm1.aspx
  3. WebForm1.aspx HTML 视图中将现有代码替换下面的代码示例:
    <%@ Import Namespace="System.Data.SqlClient" %>
    <%@ Import Namespace="System.Data" %>
    <HTML>
    	<script language="vb" runat="server">
    
    		Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs)
    			Dim Source As DataView
    
    		'Retrieve the DataView object from the Cache class. If it does not exist, add the DataView object to the Cache class.
    
    		Source = CType(Cache("MyDataSet"), DataView)
    
    		If Source Is Nothing Then
    
    			Dim myConnection As SqlConnection = New SqlConnection("Server=ServerName; database=Pubs; user id=UID; password=PWD;")
    			Dim myCommand As SqlDataAdapter = New SqlDataAdapter("select * from Authors", myConnection)
    			Dim ds As DataSet = 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"
    
    		End If
    
    		' Bind the DataView object to DataGrid. 
    		MyDataGrid.DataSource = Source
    		MyDataGrid.DataBind()
    
    		End Sub
    
    	</script>
    	<body>
    		<form method="GET" runat="server" ID="Form1">
    	      <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>
    		</P>
    	</body>
    </HTML>
    注意 替换值的 ServerNameUID,和 PWDSqlConnection 对象的示例代码中使用您的 SQL Server 名称、 用户 ID 和密码。
  4. 调试 菜单上单击 $ 开始 以运行该应用程序。

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

参考

有关更多的信息请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
234067如何防止缓存在 Internet Explorer 中
247404如何使用 IIS 时修改缓存控制 HTTP 标头
311006如何防止 Windows 2000 中的 Web 缓存
247389IIS: 如何禁用特定的 MIME 类型的缓存
313561如何在 IIS 中的内容过期设置 HTTP 标头


有关详细的信息,请访问下面的 Microsoft 网站:
http://msdn2.microsoft.com/en-us/library/xsbfdd8c(vs.71).aspx


属性

文章编号: 811431 - 最后修改: 2007年5月31日 - 修订: 3.6
这篇文章中的信息适用于:
  • Microsoft ASP.NET 1.1
  • Microsoft ASP.NET 1.0
  • Microsoft Visual Basic .NET 2003 标准版
  • Microsoft Visual .NET 2002 标准版
关键字:?
kbmt kbhowtomaster kbdatabinding kbcaching kbwebforms kbinfo KB811431 KbMtzh
机器翻译
注意:这篇文章是由无人工介入的微软自动的机器翻译软件翻译完成。微软很高兴能同时提供给您由人工翻译的和由机器翻译的文章, 以使您能使用您的语言访问所有的知识库文章。然而由机器翻译的文章并不总是完美的。它可能存在词汇,语法或文法的问题,就像是一个外国人在说中文时总是可能犯这样的错误。虽然我们经常升级机器翻译软件以提高翻译质量,但是我们不保证机器翻译的正确度,也不对由于内容的误译或者客户对它的错误使用所引起的任何直接的, 或间接的可能的问题负责。
点击这里察看该文章的英文版: 811431
Microsoft和/或其各供应商对于为任何目的而在本服务器上发布的文件及有关图形所含信息的适用性,不作任何声明。 所有该等文件及有关图形均"依样"提供,而不带任何性质的保证。Microsoft和/或其各供应商特此声明,对所有与该等信息有关的保证和条件不负任何责任,该等保证和条件包括关于适销性、符合特定用途、所有权和非侵权的所有默示保证和条件。在任何情况下,在由于使用或运行本服务器上的信息所引起的或与该等使用或运行有关的诉讼中,Microsoft和/或其各供应商就因丧失使用、数据或利润所导致的任何特别的、间接的、衍生性的损害或任何因使用而丧失所导致的之损害、数据或利润不负任何责任。

提供反馈

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com