Кэширование вывода ASP.NET - динамически обновлять зависимости - PullRequest
1 голос
/ 13 января 2010

У меня есть приложение ASP.NET, которое требует кэширования вывода. Мне нужно сделать недействительными кэшированные элементы при изменении данных, возвращаемых веб-службой, поэтому простой продолжительности недостаточно.

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

Чтобы связать вывод страницы с этой зависимостью, я думаю, что я должен использовать следующий метод:

Response.AddCacheItemDependency (cacheKey);

То, с чем я борюсь, это то, что я должен добавить в кеш?

Зависимость моей страницы связана с одним значением, возвращаемым веб-службой. В настоящее время я думаю, что мне следует создать пользовательскую зависимость кэша с помощью создания подкласса CacheDependency и сохранить текущее значение в кэше. Затем я могу использовать Response.AddCacheItemDependency для формирования зависимости.

Затем я могу периодически проверять значение и наличие NotifyDependencyChange, чтобы сделать недействительным мой кэшированный ответ HTTP.

Проблема в том, что мне нужно убедиться, что кэш очищается немедленно, поэтому периодическая проверка не достаточно хороша. Как я могу убедиться, что мой зависимый объект в кеше, представляющий значение, возвращаемое веб-службой, будет переоценено до того, как ответ HTTP будет получен из кеша?

С уважением, Колин Э.

Ответы [ 2 ]

0 голосов
/ 13 января 2010

Вы можете вручную сделать недействительной кэшированную страницу, используя:

System.Web.HttpResponse.RemoveOutputCacheItem(path)
0 голосов
/ 13 января 2010

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

...