Parallelize downloads across hostnames — как исправить

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

Если вы занимаетесь оптимизацией скорости загрузки своего сайта — могли столкнуться с проблемой загрузки файлов вашего сайта. Например, у вас тарифный план на сервере — Виртуальный хостинг, в котором по умолчанию администратором сервера установлены ограничения на одновременное подключение файлов с вашего сайта.

Это сделано в целях оптимизации нагрузки на сервер, на котором кроме вашего сайта стоит еще несколько десятков других сайтов.

Если вы тестируете скорость загрузки сайта на ресурсе Pingdom Tools наверняка в списке Performance видели сообщение такого рода:

Parallelize downloads across hostnames - как исправить

Если открыть справа иконку — вы увидите список файлов с вашего сайта, которые невозможно загрузить параллельным способом, а только последовательно, так как на вашем сервере так настроен сервер администратором:

Parallelize downloads across hostnames - как исправить

Как видно на скриншоте выше, таких файлов, ожидающих последовательной загрузки каждого, может быть довольно много. В моем случае их 90 штук. Это файлы плагинов и файлы активной темы.

Сколько примерно времени уходит на их загрузку, прежде, чем сайт откроется в браузере? Достаточно много. По моим оценкам, последовательная загрузка 90 таких файлов составляет примерно от 2-х до 4-х секунд на загрузку.

Этот фактор называют Parallelize downloads across hostnames

Необходимо создать условия для параллельной загрузки этих файлов вашим браузером, дав определенную команду вашему серверу.

Как это сделать?

Во-первых, нужно составить список таких файлов. У каждого сайта он свой.

Во-вторых, зарегистрировать на сервере минимум 2 поддомена сайта, с именами (как пример): media1, media2.

В-третьих, скопировать эти файлы на эти поддомены, с соблюдением точного пути (URL) для каждого файла.

Для чего это нужно?

Мы добавим специальную функцию в файл functions.php вашей активной темы, для того, чтобы показать серверу, откуда можно загружать параллельно скрипты и файлы, которые стоят в очереди на загрузку по адресу основного домена.

Откройте файл functions.php вашей активной темы и добавьте в него такую функцию:

function parallelize_hostnames($url, $id) {
$hostname = par_get_hostname($url);
$url = str_replace(parse_url(get_bloginfo(‘url’), PHP_URL_HOST), $hostname, $url);
return $url;
}

function par_get_hostname($name) {
//add your subdomains below, as many as you want.
$subdomains = array(‘media1.mydomain.com’,’media2.mydomain.com’);
$host = abs(crc32(basename($name)) % count($subdomains));
$hostname = $subdomains[$host];
return $hostname;
}
add_filter(‘wp_get_attachment_url’, ‘parallelize_hostnames’, 10, 2);

Обратите внимание, в коде вместо media1.mydomain.com необходимо заменить на адрес вашего домена (и поддомена, если вы создали поддомен с другим адресом, не таким как в примере у меня).

Когда сделаете эти изменения — вернитесь на сайт Pingdom Tools и запустите повторно проверку.

Если сделали все ОК — вы увидите вот такое сообщение:

Parallelize downloads across hostnames - как исправить

Успехов!

Важно! Эта запись может содержать ссылки на плагины, которые к моменту вашего чтения и скачивания могут работать не корректно. Будьте внимательны.

2 Comments

    • Автор · Edit

      Если у вас стоит кеширование файлов — удалите кеш, а потом проверьте.
      «Сделал как написано» — мне ни о чем не говорит.
      У каждого сайта — свои серверные настройки.
      Спросите саппорт, ведь вы им платите деньги.
      Пусть почешут репу и напишут вразумительный ответ, который вас удовлетворит.
      А если отморозятся и напишут бред — бегите от них подальше.
      Добрый совет, бесплатно, накануне выходных.
      И вам хорошо отдохнуть.

      Ответить

Добавить комментарий

Ваш email нигде не будет показан. Обязательные поля помечены *