2014-02-06 118 views
0

我正在使用Razor 3並以.NET框架4.5爲目標,開發ASP.NET Web Pages項目。此時我不知道它是否會部署在IIS7(Windows Server 2008 R2)或IIS8(Windows Server 2012)上。ASP.NET網頁 - 半動態內容緩存

我有一些.vbhtml內容頁面,它們是從一個定製CMS管理的數據庫中填充的。這些頁面的內容很少會發生變化(它們是主頁,關於我們,它是如何工作的,常見問題類型頁面),我想確保內容被有效緩存以防止不必要的數據庫調用。我認爲這是半動態內容。

緩存頁面的最佳方式是什麼,以便它們只在內容發生更改時才從數據庫中獲取?這可以在IIS中設置,還是應該在代碼中完成?

謝謝。

+0

你在使用NHibernate嗎? –

+0

@Carl Carlson我從來沒有使用過它,我的團隊傾向於遠離ORM解決方案,例如Entity Framework,但是如果它可能有用,我一定會考慮它。我唯一會擔心的是一個陡峭的學習曲線,因爲承諾的項目時間表。 –

+0

現在有多少個不經常更改的內容頁面,或者可能存在多少個?我的答案可能會有所不同,具體取決於是否有十個或一萬個! – Polynomial

回答

1

我會在前言中說我絕不是緩存方面的專家,下面僅代表我對您的問題的看法和想法。

首先,根本不使用緩存的情況。通過使用緩存,我們基本上交換內存佔用的CPU和I/O時間。如果前者很重要,而後者有備用,這是一個明顯的勝利。當然,除了內存使用外,它的價格還有另外一個代碼:代碼複雜度。緩存系統當然不必過於複雜,但我一直認爲,您可以編寫的最佳代碼通常是您可以編寫的最簡單的代碼。我個人認爲,在考慮實施動態資源緩存之前,這些資源應該每分鐘被請求超過一次(或者頁面應該計算一些非常昂貴的CPU或I/O方式)。如果代碼不經常執行,我會說一個簡單的CMS數據庫經常碰到某些內容,但不值得向代碼庫添加額外的失敗點。這就是說,並繼續假設你仍然想在你的網站上實現某種形式的基本緩存系統,網頁提供了一些簡單但強大的內置工具。這裏有一個很好的教程:

http://www.asp.net/web-pages/tutorials/performance-and-traffic/15-caching-to-improve-the-performance-of-your-website

我問了一下CMS是否使用相同的項目的原因是,它有時方便的時候,你可以很容易地編輯直接作廢/重新加載緩存,當特定內容被編輯。您可以在編輯立即顯示時使數據更持久。一個簡單的系統,前端頁面可以在緩存爲空時加載數據庫中的內容(並在緩存時將其存儲在緩存中),再加上一個編輯器,使其失效和/或重新加載它聽起來對我來說很理想,如果您決定繼續實施緩存。

+0

這是一個關於數據緩存的有用鏈接;爲了我的目的,這比頁面級緩存更好,並且使用WebCache對象實現起來非常容易。我注意到你對緩存案的評論,並且會有一個想法。非常感謝您花時間。 –