2009-09-15 4 views
2

Можно ли очистить выходной кеш одного веб-приложения asp.net из другого веб-приложения asp.net?Очистить ASP.NET OutputCache через веб-приложения

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

Страницы в/Area1/и/AREA2/являются кэшируются и управляются через/intranet/cms /. Когда страница редактируется с помощью/intranet/cms/Я хочу очистить ее из кеша в соответствующем/области #/приложении.

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

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

Спасибо!

-Mike Томас

ответ

3

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

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

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

+0

Хорошая идея - я был (и до сих пор), учитывая это. Выдача HTTP-запроса из области редактирования (на мой взгляд) менее идеальна, но она, несомненно, будет работать. – Mike

+0

Это жизнеспособное решение, если вы не используете несколько рабочих процессов (Web Garden). – Badaro

+0

@ Бадаро: Хороший момент, я должен буду запомнить этот. На данный момент я не запускаю ни одно из моих приложений в веб-саду, а просто использую множественную балансировку нагрузки на сервер. – devstuff

2

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

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

+0

Интересная возможность. Я не являюсь огромным поклонником большого количества файлов «temp», охлажденных на сервере (поскольку мы хотим иметь возможность аннулировать отдельные страницы), но это кажется жизнеспособным. Поскольку это все еще на одном сервере, дополнительные административные накладные расходы на настройку внешнего кэширующего провайдера не совсем того стоят, но это * будет делать трюк. – Mike

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

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