首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >添加访问的OutputCache如何计数?

添加访问的OutputCache如何计数?
EN

Stack Overflow用户
提问于 2016-08-30 16:30:55
回答 2查看 184关注 0票数 0

我想添加每个人的访问次数请求操作。我的操作是:

代码语言:javascript
复制
public async Task<ActionResult> Index()
{
    // add visit count
    VisitCount();
    return View(await db.Departments.ToListAsync());
}

当我使用OutputCache缓存它时,VisitCount()没有运行!如何使用VisitCount进行OutputCache

use it .but not run (只在每个输出缓存持续时间内运行)

代码语言:javascript
复制
[VisitCoutFilter]
[OutputCache(Duration = 30,Order = 100)]
public async Task<ActionResult> Index()
{
    return View(await db.Departments.ToListAsync());
}

并访问cont:

代码语言:javascript
复制
public class VisitCoutFilter: ActionFilterAttribute
{
    public override void OnActionExecuting(ActionExecutingContext filterContext)
    {
        //do visit 
        // break ponit 
        base.OnActionExecuting(filterContext);
    }
}
EN

回答 2

Stack Overflow用户

发布于 2016-08-30 16:49:36

问题是OutputCache不会运行操作方法,因为它缓存了整个视图。它将从缓存中检索视图。所以,你必须问自己,你到底想要实现什么。性能?多么?通过最小化到数据库的往返行程?

最小化数据库往返行程

  1. 您可以缓存数据。如果在启用EnableObjectTracking的情况下使用实体框架,则默认情况下将缓存

中的数据

  1. 您可以使用局部视图来呈现数据,并且只缓存局部视图。这将利用

的数据缓存

最小化对服务器的请求

1.如果您希望消除到web服务器的往返,您可以在客户机上缓存视图。但是,您将需要使用javascript来处理它的analitics部分

代码语言:javascript
复制
 [OutputCache(Duration=100, VaryByParam="none", Location=OutputCacheLocation.Client, NoStore=true)]
    public ActionResult Index(){}
票数 2
EN

Stack Overflow用户

发布于 2016-08-30 16:45:31

好的,我知道你的问题和解决方案is here

顺便说一句,OutputCacheAttribute有一些限制,Paul Hiles开发了一个名为DonutOutputCache的自定义属性来帮助克服这些限制。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39222459

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档