2 回答

TA貢獻1827條經驗 獲得超9個贊
您沒有發出 1 個請求——您發出了 1 個加載頁面的請求,然后是 5 個獲取數據的請求。除非您考慮使用緩存,否則您無法在調用之間保留這樣的數據。
https://msdn.microsoft.com/en-us/library/system.web.caching.cache(v=vs.110).aspx
我的想法是您的控制器方法應該首先檢查緩存以查看該項目是否存在,如果存在,則將其拉出并返回。如果該項目不存在,則.GetData()
在返回數據之前調用 \并立即將其存儲在緩存中。您還可以設置一些選項,讓數據在幾分鐘后過期。

TA貢獻1785條經驗 獲得超8個贊
為了使 Jason 的回答更具體,一個選項是使用MemoryCache類在指定時間段內跨 AJAX 調用緩存數據,如下所示:
using System.Runtime.Caching;
[HttpGet]
public ContentResult GetData1()
{
var query = GetData();
//Rest of code
}
public object GetData()
{
string key = "myDataKey";
object data = MemoryCache.Default.Get(key) as object; // specify your type instead of object
if (data == null) // not in cache, need to go to DB
{
data = _myService.GetData();
// Cache it for 5 minutes.
DateTimeOffset duration = DateTimeOffset.UtcNow.AddMinutes(5);
MemoryCache.Default.AddOrGetExisting(key, data, duration);
}
return data;
}
如果線程同步是個問題,您可能需要在代碼周圍加鎖GetData()。
- 2 回答
- 0 關注
- 223 瀏覽
添加回答
舉報