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 ,如需轉載請自行聯系原作者