8 Дек 2011Категория: Делаем сайты Автор:

Ускоряем 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


Метки: , , ,


Смотрите так-же:

    Обратите внимание

    Лошади в Лукино
    cross-roads.ru
    Pearson - CD-ROM. Backpack American English 3 Single User CDROM
    store.cross-roads.ru
    Effecton — Тест социального интеллекта Гилфорда
    soft.masterit.ru

    Оставьте комментарий

    Необходимо войти что бы оставить комментарий.

  • Рекомендую

    Business Key Top Sites
  • Реклама