Ускоряем WordPress. Переносим статику на отдельный домен

Для ускорения сайта на WordPress (да и любого другого) рекомендуется вынести статику на отдельный cookieless домен. Это означает, что обращении за стилями и картинками, браузер не будет отправлять заголовок Cookie, который может быть довольно большим.

Например, есть сайт example.com.
Если зайти на главную страницу (http://example.com/), сервер вернет заголовки, которые будут содержать Cookie: … После загрузки html браузер начнет загружать картинки (т.е. http://example.com/wp-content/themes/classical/images/logo.jpg), стили (т.е. http://example.com/wp-content/themes/classical/style.css), скрипты и т.п. При каждом обращении браузер отправит заголовок Cookie серверу с тем значением, которое получил при загрузки главной страницы. Это увеличивает трафик и повышает нагрузку на сервер. Представьте, что у вас на сайте грузится 100 картинок, стилей и JavaScript’ов. Суммарный объем статики, может не превышать 30Кб, а при этом объем Cookie будет для всех этих файлов может оказаться 5-10Кб (0,5к*100), т.е. трафик увеличится почти на треть! Особенно это заметно, если в дизайне используется много мелких картинок.

Один из вариантов решения, который чаще всего используют – вынос статики на другой домен. Можно использовать субдомен, но это может не помочь если Cookie отправляются на домен example.com (т.е. для всех субдоменов). Домен для статики может быть обычным алиасом от главного, но для браузера это разные адреса. Замена адресов загрузки статики на работающем сайте вручную дело неблагодарное, поэтому есть простые инструменты.

1) Автозамена в html с помощью модуля Nginx ngx_http_sub_module.
Пример конфигурации:

sub_filter 'src="http://example.com/wp-content/uploads'
'src="http://static-example.com/wp-content/uploads';
sub_filter_once off;

Обратите внимание, что указываю src=”, что бы сюда не попали href=” и другие атрибуты.
Минусом этого способа является то, что конфигурацию можно использовать только раз. Годится для замены в выводе всех адресов картинок, встроенных в посты. Адреса загрузки статики дизайна нужно сменить в файлах темы.

2) Автозамена с помощью модуля Apache mod_substitute
в httpd.conf (или в файле конфигурации виртуального хоста), или в .htaccess

AddOutputFilterByType SUBSTITUTE text/html
Substitute s|src="http://example.com/wp-content/uploads|src="http://static-example.com/wp-content/uploads|i

Строк с Substitute можно указать несколько. Используется Regexp. Однако Апач делает это наверняка медленнее, чем Nginx.

Если же у вас используется Fast-cgi, то можно попробовать сделать замену на выводе в PHP с помощью ob_start, но тут большой минус, что при обновлении WP, утерянные строки нужно будет восстанавливать.
Пример index.php


Комментариев пока нет.

Подобные

В ОТП Банке рассказали, как россиянам избежать блокировки счетов из-за подозрительных транзакцийВ ОТП Банке рассказали, как россиянам избежать блокировки счетов из-за подозрительных транзакций

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

«Китаец» или «европеец»: эксперты «Согласия» и Авито Авто выяснили, какой автомобиль дешевле застраховать по каско«Китаец» или «европеец»: эксперты «Согласия» и Авито Авто выяснили, какой автомобиль дешевле застраховать по каско

Совместное исследование страховой компании «Согласие» и онлайн-платформы для покупки и продажи автомобилей Авито Авто показало, что в 2025 году полис каско на автомобили с пробегом китайских марок в среднем дороже,

Обученные бигли в команде с ИИ находят ранний рак с рекордной точностьюОбученные бигли в команде с ИИ находят ранний рак с рекордной точностью

SpotitEarly — биотехнологическая компания, участвующая в Startup Battlefield на TechCrunch Disrupt 2025 — разрабатывает домашний тест на рак, анализирующий дыхание человека с применением исключительного обоняния собак в сочетании с ИИ

Пользовательское соглашение

Опубликовать
Яндекс.Метрика