У меня есть ActionResult
, который возвращает результат файла:RemoveOutputCacheItem не работает
[OutputCache(VaryByParam = "document_id;size", Duration = 3 * 60 * 60, Location = OutputCacheLocation.Server)]
public ActionResult GetDocumentThumbnail(Guid document_id, int size)
{
byte[] thumbnail = null;
switch (size)
{
case 100:
thumbnail =
(from a in _unitOfWork.Documents
where a.Id == document_id
select a.Thumbnails.Thumbnail_100).First();
break;
case 25:
thumbnail =
(from a in _unitOfWork.Documents
where a.Id == document_id
select a.Thumbnails.Thumbnail_25).First();
break;
}
return File(thumbnail, "image/png");
}
Действие получает кэшировать должным образом, поэтому после первой загрузки, все остальные запросы не входит в тело действий больше.
Проблема начинается тогда, когда я пытаюсь удалить кэш для конкретного документа:
Я это функция, которую я называю, но ничего не делает (документ уменьшенное еще в кэше, когда я прошу его снова)
private void RemoveDocumentThumbnailCache(Guid document_Id)
{
HttpResponse.RemoveOutputCacheItem("/DocumentThumbnail/" + document_Id + "/");
}
Я также пробовал this solution, но без результата: я добавил пользовательский маршрут, поэтому путь не содержит параметры строки запроса. Не работает
routes.MapRoute(
name: "DocumentThumbnail",
url: "DocumentThumbnail/{document_id}/{size}",
defaults: new { controller = "Home", action = "GetDocumentThumbnail" }
);
Что я делаю неправильно?
это может помочь http://antix.co.uk/Blog/IfModifiedAttribute – Zaki
взглянуть на http://ehsanghanbari.com/Post/21/different-types-of-caching-in-aspnet-mvc4, надеюсь, что это поможет – Ehsan
@Ehsan: 'DonutCaching' [не работает] (http://mvcdonutcaching.codeplex.com/workitem/2463) с' FileResult' действия – Catalin