Asp.net

在 ASP.NET 中強制記憶體過期的最佳方法是什麼?

  • January 31, 2013

假設我有一個 ASP.NET 應用程序在負載平衡器後面的多個 Web 伺服器上執行:

我可以嗎:

  • 強制 OutputCache(頁面和/或控制級別)全域過期?
  • 強制數據記憶體(即 Cache.Insert)過期?
  • 從中央位置監控 ASP.NET 記憶體使用情況(密鑰、RAM 等)?

一種可能的解決方案是讓記憶體的每次使用都檢查文件依賴關係是否有更改。可以觸摸該文件,這將使所有記憶體過期。但是,這要求開發人員在他們的所有程式碼中都包含依賴項。他們是更好的解決方案嗎?

有很多方法可以使這些記憶體過期,例如 page outputcache by

Page.Response.Cache.SetCacheability(HttpCacheability.NoCache)

基於時間的依賴只是在定義的時間點使項目過期。

Response.Cache.SetExpires(DateTime.Now.AddSeconds(360));
Response.Cache.SetCacheability(HttpCacheability.Private)
Response.Cache.SetSlidingExpiration(true);

現在說到監控記憶體,除非記憶體上有API告訴你,否則沒有直接的辦法。

您當然可以列舉記憶體、鍵值對,然後計算儲存的每個項目的大小。聽起來不容易吧??

所以這裡是為了讓你的記憶體監控變得容易。坦率地說我自己從未使用過它,但是您可以嘗試一下,只需將 dll 添加到您的應用程序中即可。

這是您的記憶體鍵視圖,

' display contents of the ASP.NET Cache
If Cache.Count > 0 Then    
 cc.Append("<b>Contents of the ASP.NET Cache (" _    
         & Cache.Count.ToString() & " items):</b><br />")    
 For Each item As Object In Cache    
   cc.Append("Key:'" & item.Key & "' Type:" _    
           & item.Value.GetType().ToString() & "<br />")    
 Next    
Else    
 cc.Append("<b>ASP.NET Cache is empty</b>")    
End If

引用自:https://stackoverflow.com/questions/533867