WebCache 類別

提供快取以儲存經常存取的資料。

System.Object
  System.Web.Helpers.WebCache

命名空間:  System.Web.Helpers
組件:  System.Web.Helpers (在 System.Web.Helpers.dll 中)

public static class WebCache

WebCache 型別公開下列成員。

  名稱說明
公用方法靜態成員GetWebCache 物件中擷取指定的項目。
公用方法靜態成員RemoveWebCache 物件中移除指定的項目。
公用方法靜態成員Set將項目插入至 WebCache 物件。
上層

此類別代表協助程式,這個協助程式簡化 ASP.NET Web Pages 中網頁程式設計的元件。使用 WebCache 類別以快取經常存取的資料,這樣可改善網站效能。經常存取但很少變更的資訊是快取的不錯選擇。例如,您可能會快取電話區碼或郵遞區號的清單。或者,您可能會快取使用者區域特有的天氣預測資訊,然後在設定的間隔更新快取的預測資料。在網頁中,您可以擷取快取的項目,而不是每次要求頁面時都重新從其來源擷取資訊。您新增至快取的資料可以是任意類型的物件 (包括從資料庫查詢傳回的複雜巢狀資料物件、值陣列或簡單物件 (如數字、時間戳記或字串))。

您放入快取的項目會自動予以移除。通常,您會將逾時指定為間隔 (預設為 20 分鐘),而在此時間之後,項目便會過期,而且無法再進行快取。不過,如果伺服器的記憶體不足或其他原因,則也可以在逾時期間之前移除項目 (例如,重新啟動 Web 伺服器、清除快取)。一般而言,您絕對不應該計算已快取於快取中的項目;從快取中取出項目時,請確定您已實際取得項目,而非 null。視需要重新擷取項目,並重新將它放入快取中。

您可以使用下列 WebCache 類別方法,以建立、擷取和移除快取中的資料:

下列範例顯示如何使用 WebCache 類別的方法,以快取資料。

@{   
    // On each request, use WebCache.Get to check whether the cache item exists.
    if(WebCache.Get("postalCodes") == null) {
        // Call the helper method to create the cache item if needed.
        @AddPostalCodesToToCache();
    }

    // If the request is a postback, the user submitted a cache update.
    // Users choose to reset the default list, or add a custom postal code.
    if(IsPost) {
        // If user chose reset, then remove and recreate the cache item.
         if(Request["UpdateType"] == "reset") {
            WebCache.Remove("postalCodes");
            // Call the helper to recreate the cache with default postal codes.
            @AddPostalCodesToToCache();
        }
        else {
            // If user chose add, then add a custom value to update the cache. 
            // First retrieve the existing values. Use a generic 
            // List to make it easy to add a new value to the list.
            List<string> customPostalData = new List<string>(WebCache.Get("postalCodes"));
            // Add the value submitted by a user. 
            customPostalData.Add(Request["NewCode"]);
            // Call the method to update the cache, and pass a list with the new postal code.
            @AddPostalCodesToToCache(customPostalData);
        }       
    } 

}

@helper AddPostalCodesToToCache(object postalCodeData = null) {
    // If the postalCodeData param is null, no custom postal code 
    // values were submitted, so use the default postal code list.
    if(postalCodeData == null) {
        // Create cache data from an array. Data for the 
        // cache can also come from a database or other sources.
        string[] postalCodeArray = {"123456", "234567", "345678"};
        postalCodeData = postalCodeArray;
    }
    // Create the postal codes cache item.
    WebCache.Set("postalCodes", postalCodeData, 1000, false);
}
<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="utf-8" />
        <title>WebCache Helper</title>
    </head>
    <body>
        <form method="post" action="">
            <input type="radio" name="UpdateType" value="reset" />Reset the original postal codes list<br />
            <input type="radio" name="UpdateType" value="add" checked />Add a custom postal code <br />
            <div style="margin-left: 35px">
              <label for="NewCode">New Code: </label>
              <input name="NewCode" type="text" value="" />
            </div>
            <p></p>
            <input name="UpdateCache" type="Submit" value="Update Postal Codes" />
	</form>
        <h2>Postal Code Listing</h2>
        <div>
            <!-- Loop through and display the postal codes from the cache. -->
            @foreach (string p in WebCache.Get("postalCodes")) {
                <p>@p</p>
	    }
        </div>
    </body>
</html>

這個型別的任何公用 static (在 Visual Basic 中為 Shared) 成員都是執行緒安全的。並不是所有的執行個體成員都保證可以用於所有的執行緒。
顯示: