Outputcache: VaryByHeader = "Пользователь-агент" или VaryByCustom = "Браузер"? - PullRequest
11 голосов
/ 15 мая 2011

Я не уверен насчет различий между VaryByHeader="User-Agent" и VaryByCustom="Browser".Правильно ли, что последний будет создавать меньше кэшированных страниц?Или, другими словами, если я хочу кэшировать только для разных типов браузеров (и версий), последний вариант является лучшим выбором?

Спасибо за любой совет!sl3dg3

Ответы [ 2 ]

16 голосов
/ 15 мая 2011

Из статьи MSDN - Кэширование ASP.NET: методы и рекомендации :

Чтобы включить отдельные записи кэша для каждого браузера, VaryByCustom может быть установлен назначение "браузера".Эта функциональность встроена в модуль кэширования и будет вставлять отдельные кэшированные версии страницы для каждого имени браузера и основной версии.

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

  • Mozilla / 5.0 (Windows; U; MSIE 9.0; Windows NT 9.0; ru-ru))
  • 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"

3 голосов
/ 15 мая 2011

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

Кроме того, это то, что рекомендуетсяНа странице рекомендуется использовать:

http://msdn.microsoft.com/en-us/library/aa478965.aspx

Также из этой статьи о передовых практиках я вижу, что browser зависит от версии браузера.Это был мой единственный страх, и хорошо, что они его уже охватывают!

Чтобы включить отдельные записи кэша для каждого браузера, для VaryByCustom можно установить значение «browser».Эта функциональность встроена в модуль кэширования и будет вставлять отдельные кэшированные версии страницы для каждого имени браузера и основной версии.

<%@ OutputCache Duration="60" VaryByParam="None" VaryByCustom="browser"  %>

Обратите внимание, что даже при использовании user-agent вы не получитееще много копий страниц, так что, я бы сказал, это не имеет большого значения, какую из них вы набрасываете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...