Outputcache: VaryByHeader = "User-Agent" или VaryByCustom = "Браузер"?
Я не уверен в различиях между VaryByHeader="User-Agent"
и VaryByCustom="Browser"
. Правильно ли, что последнее создаст меньше кэшированных страниц? Или, другими словами, если я хочу кэшировать только для разных типов браузеров (и версий), последний является лучшим выбором?
спасибо для любого совета!
sl3dg3
Ответы
Ответ 1
Из статьи MSDN - Кэширование ASP.NET: методы и лучшие практики:
Чтобы включить отдельные записи кэша для каждого браузера, VaryByCustom может быть настроено на значение "браузер". Эта функциональность встроена в модуль кэширования и будет вставлять отдельные кешированные версии страницы для каждого имени браузера и основной версии.
Я бы сказал, что следующие пользовательские агенты будут считаться IE9.0 и создать одну запись в кеше:
- Mozilla/5.0 (Windows; U; MSIE 9.0; WIndows NT 9.0; en-US))
- Mozilla/5.0 (Windows; U; MSIE 9.0; Windows NT 9.0; en-US)
- Mozilla/5.0 (совместимо; MSIE 9.0; Windows NT 7.1; Trident/5.0)
Но создадим 3 записи, если вы использовали VaryByHeader="User-Agent"
Ответ 2
Пользовательский агент может иметь больше материала, чем только браузер, например ОС и даже некоторые плагины, включая .NET, поэтому браузер, предполагая, должен иметь меньше кэшированных страниц.
Кроме того, рекомендуется использовать страницу рекомендаций:
http://msdn.microsoft.com/en-us/library/aa478965.aspx
Кроме того, из этой статьи лучших практик я вижу, что browser
В зависимости от версии браузера браузеры. Это был мой единственный страх, и хорошо, что они уже покрывают его!
Чтобы включить отдельный кеш записи для каждого браузера, VaryByCustom может быть установлено значение "браузер". Эта функциональность встроена в модуль кеширования, и будет вставлять отдельные кешированные версии страницы для каждого имени браузера и основного версия.
<%@ OutputCache Duration="60" VaryByParam="None" VaryByCustom="browser" %>
Обратите внимание, что даже с помощью user-agent у вас не было бы так много копий страниц, поэтому я бы сказал, что это не большая сделка, на которую вы шагаете.