Чтобы лучше представить, как работает этот процесс, рассмотрим следующую серию запросов:
Вы можете попробовать все это самостоятельно, хотя, возможно, придется увеличить время хранения кэшированной страницы, дабы облегчить тестирование.
Установка VaryByParam="*" позволяет использовать кэширование с динамическими страницами, которые варьируют свой вывод по строке запроса. Этот подход может быть исключительно полезен для детальной страницы продукта, которая принимает идентификатор продукта в строке запроса. При кэшировании с варьированием параметров вы можете сохранять отдельную страницу для каждого продукта, таким образом, экономя на обращениях к базе данных. Однако чтобы получить выигрыш в производительности, может понадобиться увеличить время жизни кэшированного вывода до нескольких минут или больше.
Конечно, эта техника имеет некоторые потенциальные проблемы. Страницы, которые принимают широкий диапазон различных строковых параметров (например, исходное число для вычислений, информацию о клиенте или ключевые слова для поиска), просто не подходят для кэширования вывода. Возможное количество вариантов не ограничено, и вероятность потенциального повторного использования низка. Хотя эти страницы и будут удаляться из кэша при возникновении потребности в памяти, все же они станут вытеснять другую важную информацию, тем замедляя выполнение других операций.
Во многих случаях установка VaryByParam="*" вносит ненужную неопределенность. Обычно лучше специально идентифицировать важную переменную строки запроса по имени. Вот пример:
<%@ OutputCache Duration="20" VaryByParam="ProductID" %>
В этом случае ASP.NET будет проверять строку запроса, пытаясь найти параметр ProductID. Запросы с разными параметрами ProductID будут кэшироваться раздельно, но все остальные параметры будут проигнорированы. В частности, это может быть удобно, если страница может принимать дополнительную информацию в строке запроса, которую она не использует. ASP.NET не имеет возможности отличить "важные" параметры строки запроса без вашей помощи.
предыдущая следующая страница вначало главы оглавление
486