我想添加每个人的访问次数请求操作。我的操作是:
public async Task<ActionResult> Index()
{
// add visit count
VisitCount();
return View(await db.Departments.ToListAsync());
}当我使用OutputCache缓存它时,VisitCount()没有运行!如何使用VisitCount进行OutputCache?
use it .but not run (只在每个输出缓存持续时间内运行)
[VisitCoutFilter]
[OutputCache(Duration = 30,Order = 100)]
public async Task<ActionResult> Index()
{
return View(await db.Departments.ToListAsync());
}并访问cont:
public class VisitCoutFilter: ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
//do visit
// break ponit
base.OnActionExecuting(filterContext);
}
}发布于 2016-08-30 16:49:36
问题是OutputCache不会运行操作方法,因为它缓存了整个视图。它将从缓存中检索视图。所以,你必须问自己,你到底想要实现什么。性能?多么?通过最小化到数据库的往返行程?
最小化数据库往返行程
中的数据
的数据缓存
最小化对服务器的请求
1.如果您希望消除到web服务器的往返,您可以在客户机上缓存视图。但是,您将需要使用javascript来处理它的analitics部分
[OutputCache(Duration=100, VaryByParam="none", Location=OutputCacheLocation.Client, NoStore=true)]
public ActionResult Index(){}发布于 2016-08-30 16:45:31
好的,我知道你的问题和解决方案is here
顺便说一句,OutputCacheAttribute有一些限制,Paul Hiles开发了一个名为DonutOutputCache的自定义属性来帮助克服这些限制。
https://stackoverflow.com/questions/39222459
复制相似问题