網頁

ASP.NET網頁快取(Cache)架構圖

以下1什麼1.1什麼的看不懂,請直接拉到下方去吧!

Cache快取

參閱: Cache Configuration,快取組態, Cache Removal,快取移除

1. Page output caching網頁輸出快取

1.1 Full page caching完整網頁快取

1.1.1 <%@ OutputCache Duration="3600" VaryByParam="None" %>

1.1.2 Response.Cache

1.1.2.1
        1. Response.Cache.SetExpires(DateTime.Now.AddSeconds(3600))
        2. Response.Cache.SetCacheability(HttpCacheability.Public)

1.1.2.2 Response.Cache --> Page.Response.Cache --> HttpResponse.Cache --> HttpCachePolicy

1.2 Partial page caching部分網頁快取

1.2.1 Control caching

1.2.1.1
        1. 只快取指定的區塊
        2. User Control, *.ascx

1.2.1.1.1
          1. 於*.ascs加入指示
          <%@ OutputCache Duration="3600" VaryByParam="None" %>

1.2.1.1.2
          2. 於*.ascs.vb加入PartialCachingAttribute類別
          _    '<-- 指定使用者控制項快取時間
          Partial Class UserControls_Name ...

1.2.2 Post-Cache Substitution快取後置換

1.2.2.1
        1. 指定的區塊不要快取
        2. Substitution
        3. AdRotator

1.2.2.1.1 2.1 Substitution中必須使用「Shared」共用/靜態方法

1.2.2.1.2 3.1 AdRotator內部已實作快取後置換

2. Application data caching應用程式資料快取

2.1 Key / Value (索引鍵/數值)

2.1.1
      Cache("FirstName") = "KingKong"
      Cache("LastName") = "Bruce"

2.1.1.1
        1. Response.Cache屬性 --> System.Web.HttpResponse.Cache
        2. Cache("")物件 --> System.Web.Caching.Cache類別

2.2 Cache.Add()

2.2.1
Public Function Add( _
key As String, _    '快取資料項目索引鍵
value As Object, _    '要加入至快取的項目值
dependencies As CacheDependency, _    '相依性,如無為Nothing
absoluteExpiration As DateTime, _        '絕對期限
slidingExpiration As TimeSpan, _        '滑動期限
priority As CacheItemPriority, _        '優先權
onRemoveCallback As CacheItemRemovedCallback _    '當物件從快取移除時,會呼叫委派(如果有)
) As Object

2.2.1.1 Cache.Add()方法無多載

2.2.1.2
        1. 絕對/滑動期限兩者只能選擇一個來使用
        2. 如使用absoluteExpiration則slidingExpiration參數必須為NoSlidingExpiration
        3. 如使用slidingExpiration則absoluteExpiration參數必須為NoAbsoluteExpiration

參閱: Expiration,資料過期 (絕對/滑動期限)

2.2.2
Cache.Add("UserName", txtUserName.Text, Nothing, _
System.WebCaching.Cache.NoAbsoluteExpiration, _
System.Web.Caching.Cache.NoSlidingExpiration, _
System.Web.Caching.CacheItemPriority.Default, _
Nothing)

2.3 Cache.Inser()

2.3.1
1. Cache.Insert(key, value)
2. Cache.Insert(key, value, dependencies )
3. Cache.Insert(Key, value, dependencies, absoluteExpiration, slidingExpiration )
4. Cache.Insert(key, value, dependencies, absoluteExpiration, slidingExpiration, priority, onRemoveCallback )

2.3.1.1 Cache.Insert()方法本身為多載型式

S1.
1. 針對ASP.NET Page頁面輸出的HTML進行快取。
2. 快取HTML物件是「視覺化」的物件內容。
3. 多使用<%@ OutputCache%>宣告。
(Page output caching網頁輸出快取)

S2.
1. 針對應用程式內的資料快取(DataSet, Key/Value, ...)
2. 必須使用 Cache(" ") Is Nothing 判斷是否有快取資料,僅使用 IsPostBack 來判斷,會有問題
(Application data caching應用程式資料快取)

A1. Cache Configuration,快取組態

參閱: Cache快取

A1.1 Machine.config/Web.config

A1.1.1 網頁輸出快取組態

A1.1.1.1

A1.1.1.1.1 影響整個網站所有頁面

A1.1.1.2

A1.1.1.2.1 只影響套用的頁面

A1.1.1.3 個別網頁(Individual Page)

A1.1.1.4 使用者控制項

A1.1.2 快取API組態設定

A1.1.2.1

A1.1.2.1.1 影響網站全域應用程式

A1.1.3 SQL快取相依性組態設定

A1.1.3.1

A1.1.3.1.1 只影響套用的頁面

A1.2 <%@ OutputCache CacheProfile="Cache3600Seconds" VaryByParam="None"%>

A2. Cache Removal,快取移除

參閱: Cache快取

A2.1 自動移除

A2.1.1 Scavenging,記憶體不足

A2.1.1.1 CacheItemPriority

A2.1.1.1.1 NotRemovable > High > AboveNormal > Normal(Default) > BelowNormal > Low

A2.1.2 Expiration,資料過期

參閱:
1. 絕對/滑動期限兩者只能選擇一個來使用
2. 如使用absoluteExpiration則slidingExpiration參數必須為NoSlidingExpiration
3. 如使用slidingExpiration則absoluteExpiration參數必須為NoAbsoluteExpiration (絕對/滑動期限)

A2.1.3 Dependency,相依性改變

A2.1.3.1 1. Key Dependence
    一個快取項目相依於其他數個快取項目

A2.1.3.1.1 直接使用CacheDependency類別

參閱: 2. File Dependence
    相依於外部檔案

A2.1.3.2 2. File Dependence
    相依於外部檔案

參閱: 直接使用CacheDependency類別

A2.1.3.3 3. SQL Dependence
    相依於MS SQL Server中資料表的變更

A2.1.3.3.1 使用SqlCacheDependency類別

A2.1.3.4 4. Aggregate Dependence
    彙總相依性,相依於多個項目

A2.1.3.4.1 使用AggregateCacheDependency類別

A2.1.3.5 5. Custom Dependence
    在自己程式碼中建立的相依性設定。

A2.1.3.5.1 自行繼承CacheDependency類別來實作符合需求的相依性類別

A2.2 手動移除

A2.2.1 Cache.Remove("key")


請參考:
1. http://share.xmind.net/kkbruce/cache-cache-1/

2.EmbedViewer


3. PNG圖下載

沒有留言:

張貼留言

感謝您的留言,如果我的文章你喜歡或對你有幫助,按個「讚」或「分享」它,我會很高興的。