А пока ещё одна вводная. Что для нас сегодня означает скорость загрузки сайта? Да это самая важная часть в разработке сайта: от того, как быстро грузится ваш сайт, зависит лояльность посетителей.
Как нам говорит Гугл, сайты с загрузкой более 500 миллисекунд теряют примерно 20% посетителей с поиска.
Yahoo утверждает, что до 10% пользователей жмут в браузере кнопку «Назад», если сайт грузится более 400 миллисекунд.
А для Амазона вообще 100 миллисекундная задержка откусывает 1% от всех продаж.
Короче, кошмар да и только! Тем более, что Гугл теперь взял на вооружение выводить ближе к топу сайты, которые грузятся быстрее. То есть если у вас громоздкий и неповоротливый сайт, то Гугл может запросто понизить его в своём поиске до фиг знает каких дебрей, в которых даже годной порнушки не отыскать.
Хорошо, что у нас есть возможность с помощью нескольких трюков уменьшить скорость загрузки блога, чем мы сейчас и займёмся. Кстати, на вооружение можно взять и советы Yahoo по оптимизации загрузки сайта. Тоже годная штука.
Итак, понеслось!
Шаг 1. Включаем компрессию Gzip
Сжатие Gzip позволяет уменьшить размеры всяких xml-, html-файлов, стилей, скриптов, короче, всего до кучи, кроме всяких картинок и pdf-ов.
То есть вот нам +1 балл в скорость загрузки сайта.
Пишем в .htaccess
Для серверов на Apache
Есть такой модуль mod_pagespeed. У буржуев он поддерживается хостингами GoDaddy и DreamHost, про русские не знаю, потому что не проверял, а сама эта статья, которую вы сейчас читаете, — переводная с буржуйского. Так что можете попробовать это самостоятельно на своём хостинге, вдруг заработает. Вставляем следующее:
<IfModule pagespeed_module>
ModPagespeed on
</IfModule>
Ну а если эта штука не поддерживается вашим хостингом, то ставьте так:
<ifModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/html text/plain text/xml application/xml application/xhtml+xml text/css text/javascript application/javascript application/x-javascript
</ifModule>
Для Nginx серверов
Ежели у вас на хостинге настроен Nginx, активируйте GZIP-сжатие, вписав в .htaccess следующую запись:
server {
gzip on;
gzip_types text/html text/css application/x-javascript text/plain text/xml image/x-icon;
}
Пишем в header.php
Ну а коли ваш тщедушный хостинг не поддерживает ни mod_deflate, ни mod_gzip, тогда вписывайте в файл header.php вашей шкурки следующий кусок кода, который поддерживается как серверами на Apache, так и на Nginx:
<?php
if ( substr_count( $_SERVER['HTTP_ACCEPT_ENCODING'], 'gzip' ) ) {
ob_start( "ob_gzhandler" );
}
else {
ob_start();
}
?>
И да придёт к вашему блогу с сжатием GZIP ускорение загрузки, коего вы ещё не ведали. И да прибудет с вами сила господня! Аминь.
Шаг 2. Отключите ETags
Что такое ETags, я сам не знаю, ибо обделён умом шибко. Так что не спрашивайте меня. Но есть люди, которые понимают всю прелесть этого явления и одновременно с этим рекомендуют его отключить, если оно без надобности. А мне что-то подсказывает, что оно нам не особо-то и надо. Поэтому отключаем, вписывая в .htaccess следующее:
Header unset ETag
FileETag None
Шаг 3. Используем кэширование браузера
Кэширование браузера — это чётко, да. Загрузили сайтик, браузер записал себе его некоторые элементы и при следующем обращении к сайту, эти элементы подгружаются из кэша браузера, вместо очередного запроса к серверу, что очень хорошо.
Без кэширования в браузере наше путешествие по сайту напоминает постоянное хождение в магазин за очередным стаканом воды, вместо того, чтобы взять сразу баллон литров на двадцать и не ходить потом сто раз в магазин, когда захочется попить.
Кэширование экономит как трафик, так и пропускную способность вашего канала, и потому посетители вашего сайта становятся вам ближе и роднее, влюбляясь в сверхбыстрый сайт.
При первом посещении страницы вашего блога посетитель закачивает к себе в браузер её основные данные и при последующем обращении браузер минует обращение к серверу, вытаскивая данные из себя. Всё просто.
Для Apache-серверов
На Апаче эти все штуки настраиваются с помощью модулей mod_expires и mod_headers.
Этими модулями можно указать какие типы файлов должны быть закэшированы и насколько по времени. Они похожи между собой по действиям и можно ставить любой из них, не вдаваясь в особые подробности.
В .htaccess пишем:
# BEGIN Expire headers
<ifModule mod_expires.c>
ExpiresActive On
ExpiresDefault "access plus 5 seconds"
ExpiresByType image/x-icon "access plus 2592000 seconds"
ExpiresByType image/jpeg "access plus 2592000 seconds"
ExpiresByType image/png "access plus 2592000 seconds"
ExpiresByType image/gif "access plus 2592000 seconds"
ExpiresByType application/x-shockwave-flash "access plus 2592000 seconds"
ExpiresByType text/css "access plus 604800 seconds"
ExpiresByType text/javascript "access plus 216000 seconds"
ExpiresByType application/javascript "access plus 216000 seconds"
ExpiresByType application/x-javascript "access plus 216000 seconds"
ExpiresByType text/html "access plus 600 seconds"
ExpiresByType application/xhtml+xml "access plus 600 seconds"
</ifModule>
# END Expire headers
Или так:
# BEGIN Cache-Control Headers
<ifModule mod_headers.c>
<filesMatch "\.(ico|jpe?g|png|gif|swf)$">
Header set Cache-Control "public"
</filesMatch>
<filesMatch "\.(css)$">
Header set Cache-Control "public"
</filesMatch>
<filesMatch "\.(js)$">
Header set Cache-Control "private"
</filesMatch>
<filesMatch "\.(x?html?|php)$">
Header set Cache-Control "private, must-revalidate"
</filesMatch>
</ifModule>
# END Cache-Control Headers
Заметочка:
Не надо вписывать второе, если вписали первое, потому что оно уже содержит в себе совпадающий порядок действий для кэширования.
Для NGINX-сервера
Для NGINX запись в .htaccess будет примерно следующего вида:
location ~* \.(jpg|png|gif|jpeg|css|js)$ {
expires 1h;
}
То есть в течение часа html-странички, стили, скрипты и прочее будет забираться из браузера, минуя обращение к серверу.
Шаг 4. Уменьшаем размер базы данных
Большая база данных — это всегда геморрой. Уменьшает любимым способом — отключением добланых ревизий, которые ну нафиг не нужны. Впрочем, если вам нужны, то пропускайте этот шаг.
В файл wp-config.php надо вписать:
define('WP_POST_REVISIONS', false );
Или вы можете оставить минимальное количество ревизий на всякий случай. Как это сделать, описано тут.
И ещё...
Не знаю зачем, но, может, вам надо отследить сколько просиходит запросов к базе данных за определенный период времени. Для этого в footer.php шкурки вашего сайта можно вписать такую кракозябру:
<?php echo get_num_queries(); ?> запросов <?php timer_stop(1); ?> секунд.
Которая должна будет внизу сайта выводить желаемую вами скромную информацию о нагрузке.
Такие дела, чуваки! Конечно, я спердолил эту статью с буржуйского блога, и конечно же, вы знаете кучу более крутых методов по оптимизации блога на вордпрессе. Поэтому, если не жопитесь, то поделитесь ими с нами в комментариях. Салют!
маладэс мине тут у тебя понравилос поскрыптум
ОтветитьУдалить