【发布时间】:2017-10-28 02:13:12
【问题描述】:
我们正在构建一个 MVC 应用程序,其中有大量静态数据要在用户第一次登录时加载。
幸运的是,登录过程中必须加载的大部分数据都是主数据,对于任何用户都不会改变 但是由于主数据的大小很大,我们认为最好在服务器端实现缓存,因为浏览器可能无法保存数据
我已阅读 Microsoft MVP 在OutputCache 上的codeproject 帖子,他清楚地解释了缓存的作用以及使用缓存时要记住的事项。
所以我通过添加行来实现他在我的控制器中建议的所有内容
[OutputCache(Duration = 10, VaryByParam = "none",
Location=OutputCacheLocation, NoStore=true)]
在我的 ActionMethod 之上。
但我无法调试数据是从缓存加载还是发生了另一台服务器命中。 所以我的第一个问题是如何调试输出缓存是否工作?
然后,在我们之前的 MVC 应用程序中,我们使用了 httpcontext.current.cache,它工作得非常好。
所以,这是我的第二个问题,为什么我应该更喜欢 OuputCache 而不是 httpcontext.current.cache 而反之亦然?
它们对缓存应用程序有什么不同?
编辑:1
这是我的登录视图控制器中的方法,
public ActionResult GetRegions(string Ids)
{
objRegionsResult = GetRegionsList();
if (!string.IsNullOrEmpty(Ids))
objRegionsResult = objRegionsResult.Where(x => Ids.Split(',').Contains(x.Type.ToString())).ToList();
return Json(objRegionsResult, JsonRequestBehavior.AllowGet);
}
private List<MORegionMaster> GetRegionsList()
{
RequestUri = "Home/GetRegions";
HttpResponseMessage response = ConnectAPI(RequestUri);
if (response.IsSuccessStatusCode)
{
objRegionsResult = response.Content.ReadAsAsync<List<MORegionMaster>>().Result;
}
}
return objRegionsResult;
}
所以上面的方法是我点击 api 控制器的地方,它依次点击业务逻辑类,然后是数据库并返回数据表。
【问题讨论】:
标签: c# asp.net-mvc asp.net-mvc-4 caching