Как да паралелизирате изтеглянията през имена на хостове

click fraud protection

Някои инструменти за тестване на скоростта на честотната лента могат да препоръчат сайтовете да паралелизират изтеглянията имена на хостове за ефективно обслужване на уеб съдържание на уеб браузъри. Тази препоръка обикновено се среща на сайтове, които използват протокола HTTP / 1.1 и се случва, когато уеб браузърите ограничават броя на едновременните връзки, направени към домейн.

Уебсайтове, които имат много HTTP заявки за статично съдържание (като изображения, CSS файлове и JavaScript) срещат предупреждение за паралелизиране на изтеглянията през имена на хостове. За да заобиколите това ограничение, настройте рязане на домейни или използвайте мрежа за доставка на съдържание (CDN).

Протоколът HTTP / 2 се превърна в основен стандарт, което прави необходимостта от паралелно изтегляне остаряла. Повечето уеб хостове сега използват HTTP / 2 по подразбиране и правят безплатен CDN от някакъв вид. Тъй като HTTP / 2 е предпочитание на Google сега, помислете за актуализиране на вашия сайт и хостинг до HTTPS.

instagram viewer

Защо да паралелизирате изтеглянията през имена на хостове?

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

Когато трябва да се изтеглят повече ресурси, допълнителните ресурси трябва да изчакат в опашка за изоставане, докато има налична връзка. Ресурсите в опашката са блокирани и намаляването на това време за блокиране води до по-бързо време за зареждане на страницата.

Например, ако дадена уеб страница има 12 изображения и броят на разрешените от уеб браузъра връзки е шест, тогава шест изображения трябва да изчакат в изоставането. Изображенията в изоставането остават там, докато първите шест изображения приключат с изтеглянето.

Ако изображение като икона или лого се използва многократно, използвайте CSS Sprite за тези повтарящи се изображения, за да намалите заявките за ресурси.

Какво представлява предупреждението за паралелно изтегляне на имена на хостове?

Предупреждението за паралелно изтегляне на имена на хостове е правило, използвано в някои проверки за ефективност на уебсайта. Предупреждението показва, че този уеб браузър не може да отвори броя връзки, необходими за едновременно изтегляне на всички ресурси на уебсайта.

За уебсайтове, които използват протокола HTTP / 1.1, начинът да се заобиколи тази нужда от по-отворени връзки е минимизиране на HTTP заявките, настройте CDN или внедрете разделяне на домейни.

За уебсайтове, които използват протокола HTTP / 2, множество ресурси могат да се зареждат паралелно през една връзка; това се нарича мултиплексиране. Мултиплексирането прави ненужно рязане на домейни с HTTP / 2. Около 77 процента от уеб браузърите поддържат HTTP / 2 и не би трябвало да срещат проблем с паралелизиране на изтеглянията.

Ако вашият доставчик на уеб хостинг поддържа HTTP / 2, безопасно е да игнорирате паралелното изтегляне на предупрежденията за имена на хостове. С HTTP / 2, множество ресурси могат да се изтеглят паралелно на една връзка.

Какво е Sharding на домейн?

Sharding на домейни е метод за оптимизиране на производителността за HTTP / 1.1 връзки и се използва на уебсайтове с голям обем HTTP заявки. При разделянето на домейни активите на уеб съдържание се разпределят между няколко поддомена. Когато активите се разпределят по този начин, броят на едновременните заявки, които могат да бъдат обработени, се увеличава.

При разделянето на домейни съдържанието се качва в поддомейни без бисквитки. Потребителите не взаимодействат със статично съдържание като изображения, JavaScript и CSS файлове, така че това съдържание не трябва да се прикачва към бисквитки.

Когато поддомените не обслужват бисквитки, размерът на заявките, направени за дадена страница и латентността на заявките, намалява и уеб страниците се зареждат по-бързо. Примери за съдържание, което се възползва от оцветяването на домейни, включват страници със съдържание, което рядко се кешира, например страница с миниатюри или архив на изображения.

В Drupal модулите добавят CSS и JavaScript файлове, които могат да забавят производителността. Отидете на Конфигурация на сайта > производителност и оптимизиране на CSS и JavaScript.

За да се възползвате от предимствата на разделянето на домейни при HTTP / 1.1 връзки, следвайте тези съвети:

  • Обслужвайте ресурси от същите поддомейни за ефективно кеширане на файлове.
  • Разпределете равномерно ресурсите между поддомейните.
  • Закупете SSL сертификати за поддомейните.

При HTTP / 2 връзки рязкостта на домейна намалява производителността, тъй като има допълнителни DNS справки. Тези DNS справки увеличават времето за разделителна способност и не кешират файлове. Sharding на домейн също добавя време към всяка нова връзка. Това са други недостатъци на домейн разсейването при HTTP / 2 връзки:

  • Разпределянето на ресурси, които се зареждат от CSS, е трудно да се разпредели между изострени хостове.
  • По-голямо натоварване на сървъра от увеличения брой едновременни връзки.
  • Преместването на статично съдържание в поддомейн може да наруши кода.
  • Уеб браузърът може да не позволява достъп до различно име на хост.
  • Рутерите може да не са в състояние да класифицират голям брой изострени заявки или да разглеждат заявките като атака за отказ на услуга.

Как да паралелизирате изтеглянията през имена на хостове

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

Тези поддомейни добавят нови източници на връзки, които браузърът може да направи, и дават възможност за изтегляне на повече ресурси наведнъж. Когато ресурсите се разделят между поддомейни, уеб браузърът прекарва по-малко време за блокиране на уеб съдържание и уеб страниците се зареждат по-бързо.

За уебсайтове, които използват HTTP / 2 и HTTP / 1.1, най-лесният начин за успоредяване на изтеглянията между имената на хостове е използването на множество поддомейни чрез CDN. За уебсайтове, използващи HTTP / 1.1 и WordPress, настройте поддомейни и редактирайте файла WordPress functions.php.

Настройване на поддомейни

За да разпределите ресурси между поддомейни, създайте поне един и до четири поддомейна; препоръчва се един или два поддомена. Най-често срещаният начин за създаване на поддомейни е използването на cPanel, който се предлага от повечето уеб хостинг услуги.

Примери за поддомейни са:

  • media1.mydomain.com
  • media2.mydomain.com
  • media3.mydomain.com
  • media4.mydomain.com

Също така поддомените и имената на хостове трябва да имат една и съща структура и път. Например, ако пътят до изображението на хоста е www.mydomain.com/wp-content/uploads/, пътят до изображението в поддомените трябва да съвпада, например, media1.mydomain.com/wp-content/uploads/.

Настройте CDN за паралелизиране на изтеглянията

След като се настрои CDN и създаде поддомените, насочете всеки поддомейн към папката, която съдържа статичното съдържание. По този начин съдържанието се зарежда върху поддомена, вместо върху основния домейн.

За да насочите поддомейн, използвайте редактор на DNS зони в cPanel, за да създадете нов CNAME запис за всеки поддомейн. В полето Име на записа въведете поддомейна, например media.mydomain.com. В полето CNAME въведете основния домейн, например www.mydomain.com.

След като CNAME записите са създадени и разпространени от вашия уеб хост, добавете CNAME записите към настройките на CDN зоната.

Редактирайте файла за конфигуриране на уебсайта в WordPress, за да паралелизирате изтеглянията

След като настроите поддомените, добавете този код към файла functions.php на темата WordPress, използвана за вашия уебсайт. Заменете media1.mydomain.com и media2.mydomain.com с вашите действителни поддомейни.

функция paralelize_hostnames ($ url, $ id) {
$ hostname = par_get_hostname ($ url); // извикваме допълнителна функция
$ url = str_replace (parse_url (get_bloginfo ('url'), PHP_URL_HOST), $ hostname, $ url);
върнете $ url;
}
функция par_get_hostname ($ name) {
$ subdomains = array ('media1.mydomain.com', 'media2.mydomain.com'); // добавете вашите поддомейни тук, колкото искате.
$ host = abs (crc32 (basename ($ name))% count ($ поддомейни));
$ hostname = $ поддомейни [$ host];
връщане на име на хост;
}
add_filter ('wp_get_attachment_url', 'paralelize_hostnames', 10, 2);

Ако използвате Jetpack с WordPress, активирайте услугата Site Accelerator, за да поставите вашите изображения на CDN, управляван от WordPress.

instagram story viewer