2014-07-21 57 views
0

我在我的web應用程序的多個位置使用MemoryCache來提高性能。 問題是,我不時會註銷,但會話不應該過期。如果我將緩存提供程序更改爲OrmLite,則不會發生,但總體性能較低。 有沒有一種方法使用OrmLite緩存提供程序來保持會話狀態,同時繼續使用整個應用程序的MemoryCache。 謝謝ServiceStack - 在不同緩存提供者上持續保存會話

回答

0

當使用MemoryCacheClient時,只要AppDomain回收,會話就會丟失。

要避免這種情況,您可以使用其他任何distributed caching providers。 Redis CacheClient比RDBMS OrmLite緩存提供更好的性能。

ServiceStack只支持註冊其內置組件的單一ICacheClient的依賴,但你仍然可以在自己的服務註冊和使用一個MemoryCacheClient,如:

container.Register(new MemoryCacheClient()); 

,您可以訪問像一個正常的依賴:

public class MyServices : Service 
{ 
    public MemoryCacheClient MemoryCache { get; set; } 

    public object Any(Request request) 
    { 
     return base.Request.ToOptimizedResultUsingCache(
      MemoryCache, "urn:customers",() => { 
       return Db.Select<Customer>(); 
      }); 

    } 
}