2010-02-25 127 views
5

我正在研究與ASP.NET MVC緩存,我也在最終確定的Web主機。 我...asp.net mvc - 緩存

1)在共享主機的環境中進行時,是否緩存帶來的問題兩個問題,因爲資源是共享的,所有?這個問題聽起來可能很愚蠢,但我不知道緩存在現場的工作方式。

2)之前,我實現緩存,我要問,如果這種做法是有道理的。我將盡可能緩存,並在需要時使其無效。但是,緩存如何爲更新頻繁的項目列表工作,比如說在一分鐘之內。例如,StackOverflow的首頁,每分鐘都會添加很多問題,實際上可以緩存首頁?

編輯:3)我也想談一談緩存如何與尋呼和所有。

+0

您必須對要緩存的項目進行分類。經常更新的東西並不是一件好東西被緩存。 在** stackoverflow **的情況下,我不會讓它緩存。 當他登錄等網站範圍設置用戶帳戶信息等事情可以被緩存。 此外,如果您可以使用任何第三方緩存軟件,它將最好像** memcached **。 – 2010-02-25 10:03:50

+0

所以你暗示memcached比ASP.NET緩存更好? – TPR 2010-02-25 10:14:02

+0

其不如更好或更差。如果內置緩存做到了你所需要的,那麼你就不會做得更好了......然而,你應該做的是把你自己的包裝(作爲接口)放在緩存周圍 - 這樣就可以很容易地改變您需要的基礎實施。 – Murph 2010-02-25 10:31:57

回答

1

我想一分鐘是如果要維修200個請求第二,我本來以爲SO使用asp.net的輸出緩存的頭版很長一段時間。他們也很可能會使用某種donut caching以及緩存非用戶特定部分。

Asp.net MVC使用標準的ASP.NET緩存提供商不變。在共享主機上緩存應該可以正常工作,但請注意,如果主機選擇在計算機級別上,主機可以鎖定緩存設置。緩存提供程序處理內存管理,如果內存使用率過高,將從緩存中刪除項目。我建議你閱讀緩存here上的MSDN頁面。

併發症來自集羣環境與其說是一個共享的主機。在集羣環境中,緩存不會分發到所有機器,因此每臺機器都有一個單獨的緩存副本。如果這會造成問題,那麼您需要調查分佈式緩存解決方案,但在大多數簡單情況下,這很好。

關於分頁,asp.net的輸出緩存功能允許您根據查詢字符串進行變化,所以如果您有www.url.com?page=1,它將單獨存儲在www.url緩存中.COM?頁= 2。