Заполнение кеша вывода asp.net - PullRequest
7 голосов
/ 14 октября 2011

Есть ли способ программно заполнить кэш вывода asp.net? Я исследовал API кеширования и не могу найти очевидный способ сделать это. Кто-нибудь пробовал что-то подобное? Если да, то какой метод вы использовали?

Ответы [ 2 ]

5 голосов
/ 22 октября 2011

Я немного подумал об этом в прошлом году и в итоге пришел к выводу, что это не так важно для данного случая, но если это важно для вашего веб-сайта, все, что вам нужно сделать, это просто вызвать веб-страницы откуда-то вроде Application_Start (послевесь код уже запущен), но вы не должны останавливаться на достигнутом!

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

Установите выходной кэш в зависимости от какого-либо другого объекта в кеше и установите обратный вызов с истечением срока действия.

Таким образом, когда срок действия этого объекта кеша истекает, ваши страницы также должны отправлять запросы http на страницы, которые вы хотите восстановитьи так далее.

Я отвечаю на этот вопрос, но количество усилий и вопросительные знаки, которые у меня все еще есть в голове, заставляют меня советовать не переживать с этим ...

ОБНОВЛЕНИЕ

Единственный тип зависимости , который вы можете установить в outputcache, - это зависимость sql .Используйте его, если хотите, но если вам нужно зависеть от выходного кэша от какого-либо другого бизнес-объекта, это может оказаться очень трудным.Я мог бы сказать вам, что вы можете установить объект базы данных и зависеть от него и истечь его самостоятельно, используя какой-то таймер.

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

1 голос
/ 25 октября 2011

Заполнение кэша, как и другие, так же просто, как и запрос страниц, которые вы хотите кэшировать. Конечно, если вы сделаете это программным путем, он будет запрашивать только HTML, а не все связанные ресурсы (CSS, JavaScript, Images ...), что является хорошей вещью, чтобы избежать потери пропускной способности.

Для многих веб-сайтов элементы, которые кэшируются и потребляют наибольшее снижение производительности, являются общими для многих или всех страниц. Например, система навигации в большой CMS или витрине магазина может запрашивать базу данных и выполнять кучу работ по визуализации, которые затем можно кэшировать для всех страниц. Кроме того, большая часть начальной загрузки в ASP.net - это когда веб-сайт сначала доступен и загружен в память. Обе эти проблемы можно решить, даже вызвав одну страницу на вашем сайте, но ничто не мешает вам составить список URL-адресов и периодически вызывать каждую из них.

Если ваша политика кэширования установлена ​​на время ожидания 20 минут, возможно, запрашивайте каждую страницу один раз каждые 17-18 минут.

Вот несколько ресурсов с исходным кодом, которые помогут вам начать работу:

Хороший простой учебник по запросу веб-URL в C #

Служба мониторинга веб-сайта Windows

Асинхронный монитор веб-сайта

Как я уже упоминал ранее, вы можете легко расширить их для "foreach" по массиву или списку запрашиваемых URL.

...