ASP.NET 緩存(4)

ASP.NET可讓你把一組頁面採用相同的緩存設置,你只須要在web.config文件定義緩存設置,將這些設置關聯一個name,而後把這個name應用到頁面上去便可。
看以下的web.configweb

<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> 提供了一些選項來調節。以下:
<configuration>
<system.web>
<caching>
<cache disableMemoryCollection="true|false"
disableExpiration="true|false"
percentagePhysicalMemoryUsedLimit="90"
privateBytesLimit="0"
privateBytesPollTime="00:02:00"
/>
...
</caching>
</system.web>
...
</configuration> 架構

使用disableMemoryCollection 和disableExpiration 可讓ASP.NET在內存不足的時候中止收集緩存,而且移除過時的緩存項。請當心的使用這些這些設置,由於可能會致使你的應用程序內存耗盡。分佈式

使用percentagePhysicalMemoryUsedLimit來設置ASP.net可使用做爲緩存的最大內存量,是一個百分比。當緩存到達你設置的值,ASP.NET開始積極的清除過期的和最少使用的緩存項。該值設爲0意味着不須要內存來緩存,ASP.NET將會盡快的刪除他所增長的緩存。默認值是90,使用可用內存的90%來做爲緩存。 ide

privateBytesLimit 設置了在ASP.NET開始清除到期的數據項並試圖回收內存以前,能夠佔用的最大的內存字節數。默認值是0.這表示ASP.NET會使用本身的算法來決定何時開始回收內存。memcached

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整合。

相關文章
相關標籤/搜索