Очистить ASP.NET OutputCache через веб-приложения - PullRequest
2 голосов
/ 15 сентября 2009

Можно ли очистить кэш вывода одного веб-приложения asp.net из другого веб-приложения asp.net?

Причина в том, что ... У нас есть несколько приложений wep, структурированных как ...

Страницы в / area1 / и / area2 / кэшируются и управляются через / intranet / cms /. Когда страница редактируется с использованием / intranet / cms /, я хочу удалить ее из кэша в соответствующем / area # / application.

Я уже пытался использовать VaryByCustom, который ищет guid, хранящийся в HttpContext.Cache, но, похоже, он кэшируется для каждого веб-приложения, но это не работает.

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

Спасибо!

- Майк Томас

Ответы [ 2 ]

3 голосов
/ 15 сентября 2009

То, как я делал это в прошлом, - это наличие «скрытой» страницы (на каждом из /areaX сайтов), которая выполняет сброс, перезагрузку и т. Д. Страница проверяет параметр общего секретного запроса перед выполнением что-нибудь (чтобы избежать DoS-атак). Если он действителен, страница выдаст сообщение «ОК» после завершения операции; генерирует ошибку 404, если секрет недействителен.

Если вы хотите, чтобы сброс выполнялся для каждого элемента или группы, добавьте второй параметр, который идентифицирует этот элемент / группу.

Этот метод также не зависит от серверной технологии и при необходимости может быть вызван другими инструментами управления.

2 голосов
/ 15 сентября 2009

Один из способов сделать это - использовать общий ресурс в качестве зависимости, обычно это файл. Когда файл изменяется, кеш очищается. Я думаю, что вы можете использовать HttpResponse.AddFileDependency для этого.

Однако в этих случаях обычно лучше использовать кэш вне процесса, например memcached . Я сам не проверял, но эта ссылка посвящена использованию memcached с OutputCache.

...