一区二区久久-一区二区三区www-一区二区三区久久-一区二区三区久久精品-麻豆国产一区二区在线观看-麻豆国产视频

ASP.NET 2.0緩存技術(shù)探討

  1.ASP.NET Output Caching

  當(dāng)一個(gè)網(wǎng)頁(yè)頻繁被訪問(wèn)的時(shí)候,我們可以通過(guò)把整個(gè)網(wǎng)頁(yè)緩存來(lái)提高執(zhí)行效率。這樣作的優(yōu)點(diǎn)是,當(dāng)用戶再次訪問(wèn)這個(gè)網(wǎng)頁(yè)的時(shí)候,被格式化好的HTML會(huì)被直接送顯。

  為什么會(huì)存在這種效果呢?我們通過(guò)ASP.NET的基本運(yùn)行機(jī)制來(lái)解釋這個(gè)問(wèn)題。ASP.NET是一個(gè)動(dòng)態(tài)的服務(wù)器,當(dāng)用戶從客戶端提供一個(gè)請(qǐng)求的時(shí)候,那么服務(wù)端的IIS接受到請(qǐng)求,然后根據(jù)用戶的提示執(zhí)行相應(yīng)的代碼。執(zhí)行代碼之后生成一個(gè)結(jié)果。這個(gè)結(jié)果會(huì)被緩存成一個(gè)HTML放在Server端,然后通過(guò)響應(yīng)用戶的Request將這個(gè)HTML傳送到客戶端。在這之中我們發(fā)現(xiàn),很多時(shí)候,用戶的請(qǐng)求實(shí)際上并沒(méi)有多大的變化,可能請(qǐng)求的都是相同的內(nèi)容。這時(shí)候執(zhí)行一次代碼的成本就會(huì)相當(dāng)?shù)母摺<热晃覀円呀?jīng)生成了一個(gè)HTML,我們何必要在重新執(zhí)行一次代碼呢?我們直接把HTML送顯就可以了。

  Output Cache是一項(xiàng)非常有效的增強(qiáng)訪問(wèn)性能的技術(shù),由于IIS的一些特性,默認(rèn)情況下Output Cache是打開(kāi)的,但是要對(duì)一些請(qǐng)求進(jìn)行緩存,還需要開(kāi)發(fā)者進(jìn)行定制。

  定制Output Caching

  對(duì)于Output Caching的定制,我們有兩種方法,一種是基于底層的API技術(shù),一種是基于高層的@Output Caching,一旦Output Caching被定制過(guò),那么這個(gè)網(wǎng)頁(yè)就會(huì)在第一次被訪問(wèn)的時(shí)候生成cache,直到請(qǐng)求過(guò)期為止。

  我們著重點(diǎn)是使用高層的@Output Caching標(biāo)簽來(lái)設(shè)置,因?yàn)锳PI技術(shù)的編程難度比較大,和ASP.NET快速編程理念不相符。

  代碼示例:通過(guò)使用Output Cache定義一個(gè)緩存頁(yè),顯示當(dāng)前時(shí)間,大家可以看到,當(dāng)這個(gè)頁(yè)面被緩存之后,刷新時(shí),當(dāng)前時(shí)間顯示不發(fā)生變化。

<script runat="server">
protected void Page_Load(object sender, EventArgs e)
{
TimeMsg.Text
= DateTime.Now.ToString();
}
</script>//head以前。

protected void Page_Load(object sender, EventArgs e)
{
TimeMsg.Text
= DateTime.Now.ToString();
}

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.ASPx.cs" 
Inherits="_Default" %>
<%@ OutputCache Duration="60" VaryByParam="none" %>

2. Page Fragment Caching

  作為Output的緩存的附加功能,還提供一種緩存技術(shù),專門(mén)用于緩存用戶控件或者網(wǎng)頁(yè)中的一部分東西。可以指定沒(méi)一部分或者某一個(gè)區(qū)域不被緩存。

  在頁(yè)面中,指定返回參數(shù),來(lái)決定控件被緩存的部分。使用語(yǔ)句VaryByparam語(yǔ)句指定控件更具參數(shù)來(lái)改變。

  示例:通過(guò)返回參數(shù)改變緩存內(nèi)容示例

用戶控件頁(yè)面設(shè)置:

<%@ Control Language="vb" %>

<%@ OutputCache Duration="60" VaryByParam="none" %>

3. Data Caching(數(shù)據(jù)緩存)

ASP.NET提供了一種非常快捷的方法進(jìn)行數(shù)據(jù)庫(kù)緩存,用戶可以非常方便的對(duì)頁(yè)面變量進(jìn)行緩存。并以此提高程序效率。

一個(gè)頁(yè)面變量的緩存生命周期與應(yīng)用程序的緩存生命周期相同。

同時(shí)對(duì)后臺(tái)數(shù)據(jù)進(jìn)行修改的時(shí)候,還需要對(duì)Cache進(jìn)行相應(yīng)的處理。

示例:使用數(shù)據(jù)緩存示例:

<%@ Page Language="vb" %>
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.SqlClient" %>
<html>
<script runat="server">
Sub Page_Load(ByVal Src As Object, ByVal E As EventArgs)
Dim Source As DataView

' try to retrieve item from cache

' if it's not there, add it

Source = Cache("MyDataSet")
If Source Is Nothing Then
Dim MyConnection As SqlConnection
Dim MyCommand As SqlDataAdapter
MyConnection = New SqlConnection(ConfigurationManager.ConnectionStrings("pub
sConnectionString").ConnectionString)

MyCommand = New SqlDataAdapter("select * from Authors", MyConnection)
Dim ds As 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
MyGrid.DataSource = Source

MyGrid.DataBind()

End Sub

</script>
<body>
<form id="Form1" runat="server">
<h3>
<font face="Verdana">Caching Data</font></h3>
<ASP:GridView ID="MyGrid" runat="server">
</ASP:GridView>
<p>
<i>
<ASP:Label ID="CacheMsg" runat="server" /></i>

</p>

</form>

</body>

</html>

  4. SQL Cache

  前面的例子中,我們使用的是緩存技術(shù),一旦時(shí)間到,無(wú)論服務(wù)器端的數(shù)據(jù)是否改變都會(huì)釋放緩存,下面介紹的例子,通過(guò)配置數(shù)據(jù)庫(kù)連接池,只有當(dāng)數(shù)據(jù)庫(kù)數(shù)據(jù)被改變的時(shí)候,緩存才會(huì)改變。

  示例:配置連接池示例

  開(kāi)一個(gè)DOS窗口->找到ASPNET_regsql.exe工具(常用參數(shù):-s指定我們注冊(cè)的服務(wù)器-E使用Windows授權(quán)模式-D指定數(shù)據(jù)庫(kù)DataBase名字-ED緩存生效)->

ASPNET_regsql.exe –s “.SQLExPress” –E –d “pubs” –ed

ASPNET_regsql.exe –s “.SQLExPress” –E –d “pubs” –et –t  “authors”

<%@ OutputCache Duration = “999999” SqlDependency = “Pubs:Authors” VaryByParam = “none”%>

5.       Cache Configuration

可以通過(guò)在webconfig里配置不同的緩存描述,在頁(yè)面中調(diào)用該描述來(lái)減少重復(fù)定義緩存描述的工作量。

示例:緩存描述定義示例:

<configuration>
<appSettings/>
<system.web>
<caching>
<outputCache>
<diskCache enabled="true" maxSizePerApp="2"(2M) />
</outputCache>
<outputCacheSettings>
<outputCacheProfiles>
<add name="CacheFor60Seconds" duration="60" />
</outputCacheProfiles>
</outputCacheSettings>
<!--
<sqlCacheDependency enabled="true" pollTime="1000"
<databases>
<add name="PubsDB" connectionStringName="pubsConnectionString" />
</databases>
</sqlCacheDependency>
-->
</caching>
</system.web>
</configuration>

NET技術(shù)ASP.NET 2.0緩存技術(shù)探討,轉(zhuǎn)載需保留來(lái)源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 欧美人与物videos另 | 四虎现在的网址入口 | 美女色黄网站 | 亚洲欧美激情在线 | 亚洲精品网站在线 | 污视频在线看网站 | 色狠狠一区 | 深夜免费小视频 | 精品一区二区三区免费 | 午夜宅宅宅影院在线观看 | 91久久青草精品38国产 | 一区二区三区四区免费视频 | 国产精品香蕉在线一区 | 一区二区三区高清 | 男人扒开女人腿做爽爽视频网站 | 91久久香蕉 | 亚洲人人爱 | 日韩国产一区二区 | 韩国一级毛片视频免费观看 | 亚洲伊人久久大香线蕉结合 | 国产成人综合亚洲 | 亚洲视频一 | 在线观看亚洲成人 | 自拍一区在线观看 | 久久精品国产久精国产 | 久久狠狠干 | 成人看的午夜免费毛片 | 97日韩| 色视频在线观看免费 | 伊人久久大香线蕉综合热线 | 精品日本久久久久久久久久 | 999精品视频| 视频区图片区小说区 | 色多多成视频人在线观看 | 亚洲国产成人久久笫一页 | 日本精品一区二区三区在线观看 | 国产精品一区伦免视频播放 | 国产欧美日韩高清专区ho | 国产在线播放免费 | 国产婷婷色综合成人精品 | 中文字幕一二三四 |