Как удалить кэш на веб-сайте ASP с веб-сайта ASP.NET на том же сервере? - PullRequest
2 голосов
/ 21 июля 2010

У меня есть два отдельных сайта на одном сервере. Один сайт - это форум (написанный на ASP Classic), где пользователи могут публиковать информацию в различных разделах и темах и т. Д. Другой веб-сайт (написанный на ASP.NET VB) используется для клуба, где пользователи могут покупать и скачивать видео и т. Д. Сайт форума использует кэширование для сохранения информации о членах каждого зарегистрированного пользователя. Веб-сайт клуба обновил несколько полей пользовательских данных, хранящихся в базе данных форума. Проблема в том, что мне нужно удалять кэшированную информацию, сохраненную в кеше для конкретного пользователя, всякий раз, когда я обновляю информацию о пользователях с сайта клуба. Обновления, сделанные на форуме, работают нормально, потому что он удаляет кеш.

Я попытался получить доступ к кешу с веб-сайта клуба ASP.NET, используя: Application.Contents ( "_ mbUI-2") Какой правильный ключ, но я получаю «Ничего». Поскольку я не могу получить к нему доступ, я тоже не могу удалить его. Я думаю, что «Приложение» является отдельным из-за отдельных веб-сайтов.

Если бы я мог вызвать страницу на сайте ASP с помощью xmlhttp, я мог бы написать программу для удаления кэша. Но мне нужно вызывать его из кода, а не с помощью какого-либо события, например нажатия кнопки и использования javascript для вызова http.

Если бы был доступ к кешу с обоих сайтов, это было бы идеально.

Есть предложения?

Спасибо, Джеймс

1 Ответ

1 голос
/ 21 июля 2010

Используйте активный кеш, который обнаруживает изменения непосредственно в базе данных, например SqlCacheDependency .Или используйте общий кеш, например memcached .Или напишите протокол межпроцессного взаимодействия между двумя процессами (процесс ASP.Net и классический процесс ASP).Реализация веб-службы в Классическом ASP и вызов службы из вашей ASP.Net могут быть формой IPC, достаточно хорошей (неэффективной, но простой).

Если бы был способ получить доступ к кешу изоба сайта, это было бы идеально.

Использование Memcached даст вам именно это.Memcached имеет как клиентские библиотеки .Net, так и клиентские библиотеки COM, поэтому ваши ASP.Net и ASP Classic могут одновременно обращаться к одной и той же ферме Memcached (в данном случае «ферма» - это только одна служба Memcached, работающая на хосте сервера IIS).Вы должны поставить перед всеми элементами префикс пространства имен приложения, чтобы избежать разделения на отдельные элементы.Совместно используемые элементы вы можете использовать совместно используемое пространство имен (более элегантное и эффективное), но для этого потребуется, чтобы два клиента маршалировали один и тот же (не тривиально), или вы могли просто сделать так, чтобы каждый процесс аннулировал кэшдругой (менее эффективный и более уродливый, но более простой).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...