2010-07-02 437 views
2

我寫了一個小的ASHX處理程序,它使用一個小型狀態對象,我希望在一系列請求的生命週期中保持這種狀態。我有處理程序將對象放入服務器端緩存(HttpContext.Current.Cache)中,並在ProcessRequest的開頭檢索它。ASP.NET服務器端緩存生存期?

我可以期待該對象留在緩存中多久?我希望處理程序實例能夠來來去去,所以我希望能夠堅持所有的處理程序(直到請求本身確定不再需要)。但是,如果我有處理程序寫入應用程序日誌時,它必須創建一個新的狀態對象,因爲它不在緩存中,我看到它創建了2-3次。

回答

2

當您add the item to the cache時,您可以指定生命週期和優先級。

項目不保證在整個請求的生存期內保留在緩存中。例如,如果存在內存壓力,則高速緩存可能會被清除,但爲您的項目設置更高的優先級使其更有可能保留在高速緩存中。

+0

我正在使用Cache []添加項目。謝謝。 – redman 2010-07-02 13:51:32

+1

如果您只是使用'Cache []'添加項目,則使用默認的生命週期和優先策略。我不確定它們是什麼,但我非常肯定,除非您遇到內存壓力(和/或出於某種原因,您的appdomain重新啓動),否則應該不會定期從緩存中刪除。 – LukeH 2010-07-02 14:02:27