2010-01-14 8 views
0

Для моего случая у меня есть контроллер, который затем перенаправляет пользователя с помощью RedirectResult, который фактически сделал заголовок «Местоположение».Asp.net mvc output cache не работает с RedirectToAction

Тогда я применить кэш контроллера, как этот

[OutputCache(Duration = int.MaxValue, VaryByParam = "none", NoStore=false)] 

Я пытаюсь заново запустить страницу и проверить на моем Linq профайлер, я все еще в состоянии увидеть все запросы этой страницы повторно бежать как 1s.

Как я могу предотвратить это?

+0

Я не уверен, что если кто-то может помочь вам. Я думаю, нам нужно увидеть действия контроллера. – jfar

+0

Что вы подразумеваете под этим? Я думал, что кэш вывода будет кэшировать всю страницу, включая заголовок, я прав? если он включает заголовок, он не должен снова запускать контроллер, на мой взгляд. – DucDigital

ответ

1

можно сделать вручную кэша, вместо того, чтобы использовать кэш вывода, который будет кэшировать запросы:

public IQueryable<Category> FindAllCategories() 
{ 
    if (HttpContext.Current.Cache["AllCategories"] != null) 
     return (IQueryable<Category>)HttpContext.Current.Cache["AllCategories"]; 
    else 
    { 
     IQueryable<Category> allCats = from c in db.Categories 
              orderby c.Name 
              select c; 

     // set cache 
     HttpContext.Current.Cache.Add("AllCategories", allCats, null, System.Web.Caching.Cache.NoAbsoluteExpiration, new TimeSpan(0, 0, 30, 0, 0), System.Web.Caching.CacheItemPriority.Default, null); 
     return allCats; 
    } 
} 
+0

Если это ваш ответ, вы должны принять его. –

+0

должен быть в состоянии принять tomorow, dan :) – DucDigital

 Смежные вопросы

  • Нет связанных вопросов^_^