ASP.NET MVC: очистить кэш действия от другого действия - PullRequest
2 голосов
/ 28 октября 2009

Можно ли очистить кэш одного действия от другого действия?

Допустим, в моем действии Index перечислены все мои виджеты. Виджетов много, но новые создаются не очень часто. Поэтому я хочу кешировать действие Index на неопределенное время, но вынуждаю его отображать после успешного создания.

public class WidgetController : Controller
{
    [OutputCache(Duration = int.MaxValue, VaryByParam = "none")]
    public ActionResult Index()
    {
        return View(Widget.AllWidgets);
    }

    public ActionResult Create()
    {
        return View();
    }

    [AcceptVerbs(HttpVerbs.Post)]
    public ActionResult Create(string name)
    {
        Widget widget = new Widget(name);

        // Can I clear Index's cache at this point?
        // ClearCache("Index");

        return View(widget);
    }
}

Ответы [ 3 ]

4 голосов
/ 01 ноября 2009

HttpResponse.RemoveOutputCacheItem

2 голосов
/ 28 октября 2009

Используйте свойство VaryByCustom для истечения срока действия кэша при добавлении нового виджета.

0 голосов
/ 28 октября 2009

ИМХО, если вы вызываете действие Create, вы не попадете в кэш, потому что вы просто визуализируете представление, а не перенаправляете на действие Index, выходные данные которого были кэшированы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...