您在這裏需要一些緩存方略是簡單的緩存的輔助類
using System.Runtime.Caching;
public class cacheservice: ICacheservice
{
public T GetOrSet<T>(string cacheKey, Func<T> getItemCallback) where T : class
{
T item = MemoryCache.Default.Get(cacheKey) as T;
if (item == null)
{
item = getItemCallback();
MemoryCache.Default.Add(cacheKey, item, DateTime.Now.AddMinutes(10));
}
return item;
}
}
interface ICacheService
{
T GetOrSet<T>(string cacheKey, Func<T> getItemCallback) where T : class;
}
用法:
cacheservice.GetOrSet("CACHEKEY", (delegate method if cache is empty));
緩存提供商將檢查該名字有什麼緩存中的「CACHEKEY」,如果不存在,它將調用委託方法來獲取數據並將其存儲在緩存中。
例子:
var Data=cacheService.GetOrSet("CACHEKEY",()=>SomeRepository.GetData())
您可以根據自己的需要,以及
拜託你給的代碼示例 –
緩存模型在控制器定製不是MVC是如何設計的。它被設計爲能夠[通過輸出緩存提高性能](https://docs.microsoft.com/en-us/aspnet/mvc/overview/older-versions-1/controllers-and-routing/improving-performance -with輸出緩存-CS)。 –
但我仍然覺得再次進行相同的服務調用,即使在兩種不同的操作下,也能在應用程序中多次獲取相同的數據,這是不值得的,不是嗎?我在同一個控制器類下有兩個動作。產生服務響應數據的一個動作,爲什麼不能在另一個動作中重用它,而沒有進行相同的服務調用?是使用參數來實現的嗎? – Aravind