天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

ASP.NET 2.0緩存技術探討

  1.ASP.NET Output Caching

  當一個網頁頻繁被訪問的時候,我們可以通過把整個網頁緩存來提高執行效率。這樣作的優點是,當用戶再次訪問這個網頁的時候,被格式化好的HTML會被直接送顯。

  為什么會存在這種效果呢?我們通過ASP.NET的基本運行機制來解釋這個問題。ASP.NET是一個動態的服務器,當用戶從客戶端提供一個請求的時候,那么服務端的IIS接受到請求,然后根據用戶的提示執行相應的代碼。執行代碼之后生成一個結果。這個結果會被緩存成一個HTML放在Server端,然后通過響應用戶的Request將這個HTML傳送到客戶端。在這之中我們發現,很多時候,用戶的請求實際上并沒有多大的變化,可能請求的都是相同的內容。這時候執行一次代碼的成本就會相當的高。既然我們已經生成了一個HTML,我們何必要在重新執行一次代碼呢?我們直接把HTML送顯就可以了。

  Output Cache是一項非常有效的增強訪問性能的技術,由于IIS的一些特性,默認情況下Output Cache是打開的,但是要對一些請求進行緩存,還需要開發者進行定制。

  定制Output Caching

  對于Output Caching的定制,我們有兩種方法,一種是基于底層的API技術,一種是基于高層的@Output Caching,一旦Output Caching被定制過,那么這個網頁就會在第一次被訪問的時候生成cache,直到請求過期為止。

  我們著重點是使用高層的@Output Caching標簽來設置,因為API技術的編程難度比較大,和ASP.NET快速編程理念不相符。

  代碼示例:通過使用Output Cache定義一個緩存頁,顯示當前時間,大家可以看到,當這個頁面被緩存之后,刷新時,當前時間顯示不發生變化。

<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的緩存的附加功能,還提供一種緩存技術,專門用于緩存用戶控件或者網頁中的一部分東西??梢灾付]一部分或者某一個區域不被緩存。

  在頁面中,指定返回參數,來決定控件被緩存的部分。使用語句VaryByparam語句指定控件更具參數來改變。

  示例:通過返回參數改變緩存內容示例

用戶控件頁面設置:

<%@ Control Language="vb" %>

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

3. Data Caching(數據緩存)

ASP.NET提供了一種非??旖莸姆椒ㄟM行數據庫緩存,用戶可以非常方便的對頁面變量進行緩存。并以此提高程序效率。

一個頁面變量的緩存生命周期與應用程序的緩存生命周期相同。

同時對后臺數據進行修改的時候,還需要對Cache進行相應的處理。

示例:使用數據緩存示例:

<%@ 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

  前面的例子中,我們使用的是緩存技術,一旦時間到,無論服務器端的數據是否改變都會釋放緩存,下面介紹的例子,通過配置數據庫連接池,只有當數據庫數據被改變的時候,緩存才會改變。

  示例:配置連接池示例

  開一個DOS窗口->找到ASPNET_regsql.exe工具(常用參數:-s指定我們注冊的服務器-E使用Windows授權模式-D指定數據庫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

可以通過在webconfig里配置不同的緩存描述,在頁面中調用該描述來減少重復定義緩存描述的工作量。

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

<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技術ASP.NET 2.0緩存技術探討,轉載需保留來源!

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

主站蜘蛛池模板: 免费A级毛片无码无遮挡内射 | 999久久久无码国产精蜜柚 | 亚洲性无码av在线 | 国产精品1区在线播放 | 大胸美女被吊起来解开胸罩 | 中文字幕亚洲乱码熟女在线萌芽 | free性中国hd护士高清 | 精品久久香蕉国产线看观看麻豆 | 思思久久99热只有频精品66 | 国产二级一片内射视频播放 | 一个人免费视频在线观看 | 国产精品视频yy9099 | 100国产精品人妻无码 | 秘密教学26我们在做一次吧免费 | 女人 我狠狠疼你 | 亚洲欧美日韩高清专区 | 亚洲AV 日韩 国产 有码 | 青青草A在在观免费线观看 青青草AV国产精品 青青草 久久久 | 兰桂坊人成社区亚洲精品 | 99久久国产宗和精品1上映 | 男人大臿蕉香蕉大视频 | 成年女人免费播放影院 | 日日做夜夜欢狠狠免费软件 | 国产乱码一区二区三区 | 国产精品免费一区二区三区四区 | 欧美一区二区日韩一区二区 | 好男人好资源在线观看免费视频 | 特黄大片aaaaa毛片 | 超碰免费视频在线观看 | xxnxx动漫| 解开美女胸衣2破解版 | YELLOW视频在线观看最新 | 在线免费观看毛片 | 又黄又爽又无遮挡在线观看免费 | 考试考90就可以晚上和老师C | 97一期涩涩97片久久久久久久 | 免费的好黄的漫画 | 男人大臿蕉香蕉大视频 | 亚州三级视频 | 亚洲精品国产一区二区贰佰信息网 | 国产午夜精品福利久久 |