C#在MVC3项目中使用OutputCache

时间:2011-12-15 02:44:20

标签: c# asp.net-mvc-3 outputcache actionresult

我正在使用MCV3 OutputCache来减少包含数据表的页面的加载时间。我使用ajax方法更新信息并操纵DOM以向用户显示他们的更改已成功。这样就可以了,直到它们加载页面并加载缓存的数据集而不是更新的数据集。

当调用Update方法时,我想清除缓存或将其删除,以便在重新加载页面时使用新的更新数据重新创建缓存。

我的代码如下:

[OutputCache(CacheProfile = "VideoIndexView")]
public ActionResult Index()
{
    ...
    return View(model);
}

2 个答案:

答案 0 :(得分:1)

如果要从缓存中清除某个网址,可以调用RemoveOutputCacheItem静态方法。

答案 1 :(得分:0)

您可以使用Index操作结果加载屏幕模板,并使用AJAX获取并加载实际数据。

[OutputCache(CacheProfile = "VideoIndexView")]
public ActionResult Index()
{
    ...
    return View(model);  // Really only return a model that is okay to be cached
}

public ActionResult LoadData ()
{
    var Result = // Load the data
    ...
    return Json(Result);  // Don't forget to allow GET here if you're using HTTPGET
}

// Or...

public ActionResult LoadData ()
{
    var Result = // Load the data
    ...
    return PartialView (Result);
}

这样,Index可以很好地缓存,并且在将页面提供给用户之后将加载数据并将其注入页面。如果您打算使用类似jQuery的东西,请确保在使用GET时告诉它不要使用缓存结果。