[Asp.net]緩衝簡介

來源:互聯網
上載者:User

標籤:abs   net   ons   ring   blog   isp   height   null   add   

寫在前面

針對一些經常訪問而很少改變的資料,使用緩衝,可以提高效能。緩衝是一種用空間換取時間的技術,說的直白點就是,第一次訪問從資料庫中讀取資料,然後將這些資料存在一個地方,比如記憶體,硬碟中,再次訪問的時候,不必再從資料庫中讀取,而是從記憶體或者硬碟中讀取資料,可以提高訪問速度。

緩衝

緩衝是一種利用空間換取時間的技術,通俗點也就是將得到的資料放在記憶體中或者硬碟中,在這段時間內伺服器不去讀取資料庫,或真實的資料來源,而是讀取你存在記憶體中的資料。

作用:緩衝可以有效緩解資料庫的壓力。

一個例子

還是先看一個簡單的例子,然後對緩衝有一個直觀的瞭解。

 public partial class CacheIndex : System.Web.UI.Page    {        protected void Page_Load(object sender, EventArgs e)        {            if (!IsPostBack)            {                DateTime dt = DateTime.Now;                //如果緩衝中沒有currentTime的值,則設定,否則輸出緩衝中的值                if (Cache["currentTime"] == null)                {                    //將目前時間存入緩衝                    Cache["currentTime"] = dt;                    //輸出值                    Response.Write("第一次讀取的時間:"+dt.ToString("yyyy-MM-dd HH:mm:ss"));                }                else                {                    //否則輸出緩衝中的值                    dt = (DateTime)Cache["currentTime"];                    //輸出值                    Response.Write("從緩衝中讀取的時間:"+dt.ToString("yyyy-MM-dd HH:mm:ss"));                }                           }        }    }

 

第一次訪問頁面時,會讀取目前時間,然後將其寫入緩衝,重新整理頁面你會發現,之後讀取的值,來自緩衝中的資料。如果要清空緩衝,可以將其設定為null。

這種設定緩衝的方式,是最直觀也是最簡單的方式。

那麼我們是否可以為其設定到期時間呢?當然是可以的,下面看這樣一個例子:

  public partial class CacheIndex : System.Web.UI.Page    {        protected void Page_Load(object sender, EventArgs e)        {            if (!IsPostBack)            {                DateTime dt = DateTime.Now;                //如果緩衝中沒有currentTime的值,則設定,否則輸出緩衝中的值                if (Cache["currentTime"] == null)                {                    //將目前時間存入緩衝                    /*                    @第一個參數:緩衝鍵                    @第二個參數:緩衝的值                    @第三個參數:緩衝依賴項,可以為null,不為其設定依賴項。                    @第四個參數:緩衝時間,為30秒                    @第五個參數:緩衝到期時間類型,這裡是絕對到期時間,每重新整理一次頁面之後30秒緩衝到期。                    */                    Cache.Insert("currentTime", dt, null, DateTime.Now.AddSeconds(30), System.Web.Caching.Cache.NoSlidingExpiration);                    //輸出值                    Response.Write("第一次讀取的時間:" + dt.ToString("yyyy-MM-dd HH:mm:ss"));                }                else                {                    //否則輸出緩衝中的值                    dt = (DateTime)Cache["currentTime"];                    //輸出值                    Response.Write("從緩衝中讀取的時間:" + dt.ToString("yyyy-MM-dd HH:mm:ss"));                }            }        }    }

 

無法同時設定 absoluteExpiration 和 slidingExpiration 參數。如果要讓快取項目在特定時間到期,可將 absoluteExpiration 參數設定為特定時間,並將 slidingExpiration(滑動到期時間) 參數設定為 NoSlidingExpiration。

如果要讓快取項目在最後一次訪問該項後的某段時間之後到期,可將 slidingExpiration 參數設定為到期間隔,並將 absoluteExpiration(絕對到期時間) 參數設定為 NoAbsoluteExpiration。

 總結

這裡簡單介紹了緩衝的概念,以及舉了一個緩衝的例子。這裡面需要對緩衝中的兩種到期時間好好體會,絕對到期時間和滑動到期時間。

[Asp.net]緩衝簡介

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.