https://help.superhosting.bg/http-header-vary.html
  • bg
  • en

Хостинг, Домейни, Cloud, Виртуални сървъри (VPS), Managed VPS, SSL сертификати

HTTP хедър - Vary

Хостинг терминология
http header, http vary, http header vary, vary

За какво се ползва HTTP хедърът Vary

HTTP хедърът Vary (варира,видоизменя,вариация) се използва в HTTP отговора на сървъра, за осведомяване на междинните (между уеб потребител и уеб сървър) кеширащи сървъри/услуги, че съдържанието на сайта варира спрямо точно определена характеристика на уеб потребителя. Тоест, да внимават кой вариант на съдържанието кешират и кой предоставят на различните уеб потребители.

За да знаят всички сървъри (услуги), които записват/кешират сайта и се намират между потребителя и сървъра източник, че има различни варианти на съдържанието, сървърът източник може да ги уведоми с хедъра Vary.

За стойност на хедъра Vary може да се зададе името на всеки HTTP хедър, който сайтът засича, за да определи кой вариант на съдържанието да предостави, например Vary: User-Agent, Accept-Encoding, Cookie ...

Vary: User-Agent

Възможно е сайтът да предоставя различен вариант на съдържанието за различните типове клиенти - мобилни и десктоп. Сайтът прави разлика между двата вида потребители, като използва информацията в HTTP заявката на клиента. И по-точно, в HTTP хедъра User-Agent, изпратен от клиента, се съдържа информацията която го описва - име и версия на уеб браузъра, операционна система на потребителя и други. В този случай сайтът предоставя подходящ вариант на съдържанието, базиран на данните от HTTP хедъра на клиента - User-Agent.

Към отговора на сървъра, може да се добави HTTP хедъра: Vary: User-Agent

Когато уеб потребител се свързва директно със сървъра източник на съдържанието, според информацията в неговия HTTP хедър User-Agent се изпраща точния вариант на съдържанието.

Например ако уеб клиент изпрати към сайта хедъра:
User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 8_3 like Mac OS X)
то той ще бъде засечен като мобилен потребител и към него ще бъде изпратена точната мобилна версия на съдържанието;

ако хедъра е:
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:42.0) Gecko/20100101 Firefox/42.0
към клиента ще бъде изпратена десктоп версия на съдържанието;

Точно тази разлика трябва да се има предвид от кеширащите услуги и обхождащите ботове, когато записват и индексират дадена страница. За да може след това на десктоп потребителя да предоставят десктоп версията, а на мобилния потребител да предоставят мобилната версия.

Ако хедърът Vary: User-Agent липсва в отговора на сървъра, може да се получат няколко ситуации:

- Уеб кеш/прокси: Уеб кешът бива достъпен първо от десктоп потребител, търсещ дадена уеб страница. Кеширащият сървър изисква и получава съдържанието на тази страница от сървъра източник (не получава хедъра Vary: User-Agent). Уеб кешът препраща получения десктоп вариант на съдържанието на страницата и му прави копие. След това уеб кешът бива достъпен от мобилен потребител, търсещ същата уеб страница. Тъй като кеширащият сървър не знае, че трябва да провери HTTP хедъра User-Agent, той не вижда разлика между първия и втория потребител и за това предоставя вече записания при него десктоп вариант на страницата.

- Търсачките и техните ботове: При обхождането на даден сайт ботовете на Google може да се представят като различни мобилни устройства и браузъри, с цел да достъпят и индексират отделно всеки вариант на сайта. Ако хедърът Vary: User-Agent не се изпрати към ботовете, те няма да знаят че освен индексираната дадена версия има още други. Индексирането на различните версии на съдържанието ще е от полза след това, когато дадената страница бъде потърсена. В зависимост от това дали потребителя е мобилен или десктоп, търсачката ще ги насочи към точния вариант на съдържанието.

Vary: Accept-Encoding

Друг пример за употребата на хедъра Vary е, когато сайтът предоставя компресирано съдържание. Ползва се за съвместимост с по-стари версии на браузърите или уеб клиенти, които не могат да обработват компресирано съдържание. Ако уеб клиентът не изпрати хедъра Accept-Encoding: gzip,deflate,sdch, тогава сървърът ще му изпрати некомпресирано съдържание.

Към отговора на сървъра се добавя хедъра: Vary: Accept-Encoding

info-iconВ случай че сте активирали компресиране на статичното съдържание чрез опцията в cPanel -> Настройки на компресиране, HTTP хедъра Vary: Accept-Encoding е зададен автоматично и не е нужно да го задавате ръчно през .htaccess файла. Компресирането на статичното съдържание се управлява от модула на Apache - mod_deflate.

Когато даден уеб клиент поддържа обработката на компресирано съдържание той ще обяви това пред сървъра с хедъра:

Accept-Encoding: gzip,deflate,sdch

Така сървърът знае, че клиента поддържа компресирано съдържание и ще му го изпрати, заедно с хедъра Content-Encoding: gzip, например.

Ако хедърът Vary: Accept-Encoding липсва в отговора на сървъра може да се получи следната ситуация:

- Уеб кеш/прокси: Даден уеб клиент, поддържащ обработката на компресирано съдържание, достъпва сайта през уеб кеш/прокси, в отговор уеб кешът взима компресираното съдържание от сървъра източник и го изпраща към клиента. В кеша на уеб кеша/проксито се записва компресирания вариант на съдържанието. След това същият сайт е потърсен от уеб клиент, които не може да обработва компресирано съдържание и тъй като уеб кешът не знае, че трябва да провери за наличието на хедъра Accept-Encoding, то той му праща същото компресирано съдържание. По този начин уеб сайтът не се зарежда при този клиент.

Управление на HTTP хедър: Vary

HTTP хедърите (на HTTP заявката и HTTP отговора) могат да се настройват от модула към Apache - mod_headers, чрез задаване на параметри в .htaccess файла.

info-iconApache модулът mod_headers е инсталиран и активиран по подразбиране на всички сървъри за Linux хостинг при СуперХостинг.БГ.

Например при изпращане на файлове към клиента, от типовете .js, .css, .xml и gz да се изпраща и хедъра Vary: Accept-Encoding:

<IfModule mod_headers.c>
<FilesMatch "\.(js|css|xml|gz)$">
Header append Vary: Accept-Encoding
</FilesMatch>
</IfModule>

HTTP хедърите могат да се управляват и от приложенията в хостинг акаунта, например задаване на Vary хедър чрез PHP:

<?php
header("Vary: User-Agent");
?>

или в WordPress сайт (във файл functions.php):

function add_vary_header ($headers)
{
$headers['Vary'] = 'User-Agent';
Return $headers;
}
add_filter('wp_headers', 'add_vary_header');

500px270px
SuperHosting.BG

Коментари

Все още няма коментари

Уведоми ме при
avatar
wpDiscuz
Всички права запазени © 2005-2017 , www.superhosting.bg