天天看點

ASP.NET 緩存(4)

ASP.NET可以讓你把一組頁面采用相同的緩存設定,你隻需要在web.config檔案定義緩存設定,将這些設定關聯一個name,然後把這個name應用到頁面上去即可。 

看如下的web.config

<configuration> 

<system.web> 

<caching> 

<outputCacheSettings> 

<outputCacheProfiles> 

<add name="ProductItemCacheProfile" duration="60" /> 

</outputCacheProfiles> 

</outputCacheSettings> 

</caching> 

... 

</system.web> 

</configuration> 

You can now use this profile in a page through the CacheProfile attribute:

在頁面中,你可以通過CacheProfile 屬性來設定Cache。如下 

<%@ OutputCache CacheProfile="ProductItemCacheProfile" VaryByParam="None" %>

如果你想設定其他的緩存細節,比如VaryByParam行為,你可以在OutputCache指令設定屬性,或者在配置檔案中加一個<add>标簽。

你也可以通過web.config檔案配置更多的ASP.NET緩存細節。很多選項能夠讓調試更友善,但是在産品應用中沒多大的感覺。

配置這些設定,使用<caching>元素中的<cache>元素來描述。<cache> 提供了一些選項來調節。如下: 

<cache disableMemoryCollection="true|false" 

disableExpiration="true|false" 

percentagePhysicalMemoryUsedLimit="90" 

privateBytesLimit="0" 

privateBytesPollTime="00:02:00" 

/> 

</configuration>

使用disableMemoryCollection 和disableExpiration 可以讓ASP.NET在記憶體不足的時候停止收集緩存,并且移除過期的緩存項。請小心的使用這些這些設定,因為可能會導緻你的應用程式記憶體耗盡。

使用percentagePhysicalMemoryUsedLimit來設定ASP.net可以使用作為緩存的最大記憶體量,是一個百分比。當緩存到達你設定的值,ASP.NET開始積極的清除過時的和最少使用的緩存項。該值設為0意味着不需要記憶體來緩存,ASP.NET将會盡快的删除他所增加的緩存。預設值是90,使用可用記憶體的90%來作為緩存。

privateBytesLimit 設定了在ASP.NET開始清除到期的資料項并試圖回收記憶體之前,可以占用的最大的記憶體位元組數。預設值是0.這表示ASP.NET會使用自己的算法來決定什麼時候開始回收記憶體。

privateBytesPollTime 設定了ASP.NET檢查記憶體使用情況的間隔時間。預設的輪詢時間是2分鐘。

ASP.NET緩存模型使用簡單而且非常快速,因為緩存服務運作在ASP.NET程序中,資料則存儲在實體記憶體。

但是ASP.NET緩存系統對于大資料量,長時間的緩存則效率不是很高。比如,一個大企業的持續增長的産品目錄。假設産品目錄改變不是很頻繁,你可能想要緩存緩存數以千計的産品頁面,如此多的資料,使用伺服器記憶體将會産生風險。此時,最好是能使用其他的存儲,比記憶體慢但是比重新建立頁面快,最有可能的方案包括基于磁盤的存儲,基于資料庫的存儲,或者分布式存儲系統例如Windows Server AppFabric。

任何形式的外部緩存存儲都會比正常的記憶體緩存慢,有些存儲選項甚至有潛在瓶頸并且缺少可擴充性。在你使用非基于記憶體的緩存時候,你需要仔細的評估這個緩存系統的性能,速度和擴充性。

在以前,外部緩存系統是能實作的,但是他們的實作是完全的和ASP.NET分離的,是以,每個第三方的緩存方案都有自己的API。但是ASP.NET4将提供者模型加入到緩存中,允許你用不同的資料存儲插入到緩存。但是要注意的,ASP.NET不提供任何預先建立的緩存提供者。但是,ASP.NET團隊的一些成員示範了一個原型,使用基于檔案的緩存和Windows Server AppFabric。ASP.NET架構師也保證釋出這些代碼樣例來展示如何和memcached整合。

本文轉自cnn23711151CTO部落格,原文連結:http://blog.51cto.com/cnn237111/589091 ,如需轉載請自行聯系原作者