然後我們有memcached,它可以緩存數據庫表。我相信這是正確的,它就像SqlCacheDependency(糾正我,如果我錯了)。
Memcached是一個分佈式哈希表。與.NET緩存內置的主要優點相比,您的緩存是可擴展的(您可以根據需要添加任意數量的memcached boxen)並同步(您的所有Web服務器都可以訪問相同的內容,並使一個Web中的數據失效或更新服務器會立即傳播到所有的人)
性能方面,它比.NET緩存惡化(你正在尋找了跨服務器的對象,而不是在內存中查找一臺機器上)
但是,在大型Web應用程序中是否有任何可以使用memcached,squid和ASP.NET(或PHP,JSP - 應用程序框架級別)緩存的空間。
基於上述原因,我可以想像一個2級高速緩存,使用.NET緩存第一,然後memcached的。 (例如,Get()查看memcached,將結果存儲在10秒內過期的.NET高速緩存中,然後在接下來的10秒內使用.NET高速緩存對具有相同高速緩存鍵的所有調用進行清洗,重複)
通過這種方式,您可以在沒有純memcached解決方案的網絡IO成本的情況下獲得內存中緩存查找的性能,同時具備memcached的同步和可伸縮性優勢。
您的示例是一種常見的情況。圍繞整頁緩存有一些方法,同時仍然改變特定的HTML片段,稱爲「甜甜圈緩存」。請參閱http://stackoverflow.com/questions/3318570/turn-off-page-level-caching-in-a-user-control/3318609#3318609 – 2011-10-21 23:18:16