Удаление определенной страницы из пользовательского поставщика вывода кэша в asp.net - PullRequest
2 голосов
/ 20 марта 2012

Я использую asp.net 4.0 (веб-сайт веб-форм), и я реализовал собственный поставщик вывода на основе диска, который отлично работает при кэшировании страниц на моем сайте.Однако проблема, которую я получаю, заключается в том, что я не могу найти способ удалить определенную страницу из кэша, и я подозреваю, что это проблема с перезаписью URL.

Например, если у меня есть страница с именем test.aspxЯ могу легко удалить его из кэша, используя:

HttpResponse.RemoveOutputCacheItem("/test.aspx");

Это не работает для страницы, вывод которой кэшируется через id, хотя, например, http://www.example.com/page/1 переписывается как http://www.example.com/myfolder/Page.aspx?id=1

Я вижу кешированную версию страницы, но не могу удалить ее из дискового кэша, так как мне нужен абсолютный виртуальный путь для работы RemoveOutputCacheItem.Я пробовал следующее:

HttpResponse.RemoveOutputCacheItem("/myfolder/Page.aspx?id=1");
HttpResponse.RemoveOutputCacheItem("/myfolder/page/1");

И много других вариантов, но, похоже, ничего не работает.

Кэшируемый ключ для URL-адреса не соответствует сохраненному ключу a2_myfolder_page.aspxHQNidV1FCDE, когдапытаясь использовать RemoveOutputCacheItem.

Есть ли какое-то решение для этого?Или другой способ удалить определенные кэшированные страницы?Спасибо

1 Ответ

0 голосов
/ 20 марта 2012

Вы пытались использовать VaryByParam или VaryByCustom и использовать "id" в качестве пользовательского идентификатора: http://msdn.microsoft.com/en-us/library/ms153453.aspx

...