Очистить ASP.NET Кэш выходных данных в веб-приложениях
-
07-07-2019 - |
Вопрос
Возможно ли очистить кэш вывода одного asp.net веб-приложения изнутри другого asp.net веб-приложения?
Причина в том, что...У нас есть несколько wep-приложений, структурированных следующим образом...
Страницы в /area1/ и /area2/ кэшируются и управляются через /intranet/cms/.Когда страница редактируется с помощью /intranet/cms /, я хочу очистить ее из кэша в соответствующем /area#/ application.
Я уже пробовал использовать VaryByCustom, который ищет guid, хранящийся в HttpContext.Кэш, но, похоже, он кэшируется для каждого веб-приложения, это не работает.
Действительно, если бы существовал какой-либо способ передачи данных между веб-приложениями на одном сервере, это решило бы мою проблему, поскольку я могу использовать это + VaryByCustom.
Спасибо!
-Майк Томас
Решение
Способ, которым я делал это в прошлом, заключался в том, чтобы иметь "скрытую" страницу (в каждом из /areaX
сайты), который выполняет промывку, перезагрузку и т.д.Страница проверяет общий секретный параметр запроса, прежде чем что-либо делать (чтобы избежать DoS-атак).Если это допустимо, страница выдаст сообщение "OK" после завершения операции;генерирует ошибку 404, если секрет недопустим.
Если вы хотите, чтобы очистка производилась для каждого элемента или для каждой группы, добавьте второй параметр, который идентифицирует этот элемент / группу.
Этот метод также не зависит от серверной технологии и при необходимости может быть запущен другими инструментами управления.
Другие советы
Один из известных мне способов сделать это - использовать общий ресурс в качестве зависимости, обычно файл.Когда файл изменяется, кэш очищается.Я думаю, вы можете использовать HttpResponse.Добавить файлзависимость для этого.
Однако в этих случаях обычно лучше использовать внепроцессный кэш, такой как кэшированный в памяти.Я сам этого не тестировал, но это Ссылка сделки по использованию memcached с OutputCache.