Кэшируйте страницу, но считайте хиты - PullRequest
1 голос
/ 23 августа 2010

У меня есть страница aspx, которая подсчитывает каждое посещение и создает cookie.Но если я использую OutputCache, страница учитывает только первого посетителя, который запросил страницу.Как я могу предотвратить эту ошибку?

Директива страницы:

<%@ OutputCache Duration="1200" VaryByParam="mode;page;sid;tid" %>

Код позади:

protected void Page_Load(object sender, EventArgs e)
{
    //Load single post data

    #region Hit Counter
    //hit counter lasts during session
    if (Session["LastHit" + postId] == null)
    {
        cmmnd.CommandText = "UPDATE Posts SET Hits=Hits+1 WHERE PostID=@PostID;";
        cmmnd.ExecuteNonQuery();
        Session["LastHit" + postId] = 1;
    }
    #endregion
}

Ответы [ 2 ]

2 голосов
/ 23 августа 2010

Какой смысл в этом счете?Маркетинговая информация?Используйте легкий счетчик аналитики из сценария или изображения на странице, не смешанный с созданием самой страницы.Ошибка в том, что вы добавляете дополнительную работу к занятым запросам, вместо того, чтобы давать дополнительной работе свой собственный запрос.

2 голосов
/ 23 августа 2010

Это не ошибка, но по замыслу.Страница не обрабатывается повторно, если она находится в кэше и «кэшированный вывод все еще действителен».Вы можете запустить код на этом этапе проверки, и это может помочь вам выполнить подсчет посещений и добавить его в файл cookie.Может помочь следующее:

...