В каких ситуациях мы должны использовать Query-Strings (VaryByParam) для достижения кэширования в ASP.NET?
Может ли кто-нибудь привести пример реальной ситуации в случае веб-приложения?
В каких ситуациях мы должны использовать Query-Strings (VaryByParam) для достижения кэширования в ASP.NET?
Может ли кто-нибудь привести пример реальной ситуации в случае веб-приложения?
Products.aspx?productID=12345
Очевидно, вы не хотите, чтобы выходной кэш Products.aspx содержал данные для первого запрошенного продукта.
Если я нажму Products.aspx?productID=12345
, страница будет обработана для меня, я найду информацию о продукте 12345 и кэширую результаты. Затем вы нажмете Products.aspx?productID=54321
, страница не будет обработана для вас, но products.aspx будет извлечен из кэша вывода, и вы увидите информацию для 12345. Нехорошо. VaryByParam решает эту проблему.
Самым классическим примером может быть: Каталог товаров.
Он может иметь такую структуру URL:
http://www.myshop.com/Catalog/ViewAllProducts.aspx
http://www.myshop.com/Catalog/ViewAllProducts.aspx?PageNum=123&PageSize=50
http://www.myshop.com/Catalog/ViewProduct.aspx?ProductID=12345
Первый URL — это полный список всех продуктов. Здесь нет строки запроса, но второй URL — это та же страница, но с нумерацией страниц. Номер страницы (PageNum) и количество элементов на странице (PageSize) являются строками запроса, поэтому, если пользователь не может изменить порядок списка продуктов, два разных пользователя запрашивают:
http://www.myshop.com/Catalog/ViewAllProducts.aspx?PageNum=123&PageSize=50
URL будет получать ту же информацию. Первый запрос может кэшировать эти данные, чтобы второму запросу в более позднее время не нужно было возвращаться к базе данных, чтобы получить элементы продукта (и связанные с ними сведения: цена, описание и т. д.) для их отображения. .
Третий URL-адрес — это экран сведений об одном продукте с идентификатором продукта (который может быть уникальным идентификатором из базы данных) в качестве единственного параметра строки запроса. Несколько запросов для этого почти всегда должны возвращать одни и те же данные (если только цена, описание или какой-либо другой элемент этого конкретного продукта не меняется на частой основе). Кэширование на основе строки запроса «ProductID» (и ее значений для разных продуктов) значительно снизит нагрузку на базу данных. Убедившись, что продолжительность кэша не слишком велика, вы гарантируете, что срок действия кэша истечет в разумные сроки, если фактические данные серверной базы данных изменятся.