Каков наилучший способ удаленного сброса кэша сервера в веб-ферме?

StackOverflow https://stackoverflow.com/questions/76855

  •  09-06-2019
  •  | 
  •  

Вопрос

Каждый из наших производственных веб-серверов поддерживает свой собственный кэш для отдельных веб-сайтов (ASP.NET Веб-приложений).В настоящее время, чтобы очистить кэш, мы заходим на сервер и "касаемся" файла web.config.

У кого-нибудь есть пример безопасного способа удаленно сбросить кэш для определенного веб-приложения?В идеале мы могли бы сказать "очистить кэш для приложения X, работающего на всех серверах", но также "очистить кэш для приложения X, работающего на сервере Y".

Изменения / Уточнения:

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

  • Да, срок действия кэша истекает регулярно.Однако я хотел бы настроить что-нибудь, чтобы я мог истекать срок действия определенного кэша по требованию, обычно после того, как мы что-то изменим в базе данных (мы используем SQL 2000).Мы можем сделать это сейчас, но только войдя в систему на самих серверах.

Это было полезно?

Решение 2

Нашел DevX статья о сенсорной утилите, которая выглядит полезной.

Я собираюсь попробовать объединить это либо с таблицей в базе данных (добавьте запись, и утилита touch найдет ее и обновит соответствующий файл web.config), либо с веб-службой (сделайте вызов, и утилита touch будет вызвана для обновления соответствующего файла web.config)

Другие советы

Для каждого приложения вы могли бы написать небольшой скрипт cache-dump.aspx, чтобы уничтожить данные кэша / приложения.Скопируйте его во все ваши приложения и напишите скрипт-концентратор для управления вызовами.

Для обеспечения безопасности вы могли бы добавить всевозможные проверки подлинности или IP-адреса.

Вот как я делаю фактический сброс приложения:

Context.Application.Lock()
Context.Session.Abandon()
Context.Application.RemoveAll()
Context.Application.UnLock()

Возможно, это не "элегантно", но вы могли бы настроить запланированную задачу, которая выполняет пакетный скрипт.Скрипт, по сути, "коснется" web.config (или какого-либо другого файла, который вызывает повторную компиляцию) для вас.

В противном случае срок действия кэша вашего приложения не истечет через N минут?

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top