Для управлениями картинками я пользуюсь плагином NextGEN Gallery, но вот мне захотелось вынести картинки на отдельный домен cdn.tigors.net. Это позволяет браузеру использовать дополнительные потоки для загрузки картинок, и просто настроить nginx на выдачу статического контента.

Отдельно я описывал эти способы в статьях про поиск хуков в плагинах и про настройку nginx для поддержки wordpress. Теперь соберу все в одном месте, и разбавлю картинками.

Оба домена tigors.net и cdn.tigors.net находятся на одном сервере, просто по разному обрабатываются.

Меняем ссылки на картинки в NextGEN Gallery

Открываем файл functions.php вашей темы и добавляем туда код

Select Code
function ngg_use_g($image,$imageID){
$image->thumbnailURL = str_replace('tigors.net/wp-content/gallery','cdn.tigors.net/wp-content/gallery', $image->thumbnailURL);
$image->imageURL = str_replace('tigors.net/wp-content/gallery','cdn.tigors.net/wp-content/gallery', $image->imageURL);

return $image;
}
add_filter('ngg_image_object','ngg_use_g', 10,2);


Теперь все картинки, которые выводятся через NextGEN Gallery берутся с cdn.tigors.net

Добавляем домен в nginx

Теперь настраиваем домен в nginx. Для простоты создаем отдельную запись, как видно все просто. Получил запрос, выдал картинку, быстро и эффективно.

Select Code
server {
listen 80;
server_name cdn.tigors.net;
root /path-to-wordpress/

location /wp-content/gallery/
{
try_files $uri;
}

location /
{
return 403;
}
}

Зачем все это

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

Теперь чуточку теории про браузеры. Чтобы не перегрузить сервер кучей запросов у браузеров есть лимит одновременных запросов к домену. Обычно этот лимит в пределах 5-10 запросов.

Серая часть на диаграмме это время ожидания освобождения очереди. Фотографии начали загружаться после загрузки CSS и JS.

Первые фотографии начали загружаться сразу после полной загрузки HTML.

Похожим образом можно настроить выгрузку стилей и Java-script, но они у меня и так организованы одним файлом через WP Minify.