Очень часто мы безумно раздражаемся, когда попадаем на сайт, страницы которого грузятся по несколько минут. Если сайт долго грузится, то он, несомненно, будет терять немалое число своих посетителей.
Итак, каким бы интересным, информативным и приятным по внешнему виду не был бы сайт, он обязан работать быстро. Если же этим требованием поступиться, то вместо вашего сайта, пользователи интернета обязательно найдут аналогичный, но намного более быстрый. Иногда пользователь предпочтет чуть менее качественный веб-сайт, но быстрый, тому который загружается крайне медленно, несмотря на высокое качество контента. В современном мире время важно для каждого человека, чем бы он ни занимался.
Давайте подумаем, почему сайт долго грузится, каковы могут быть причины и как их устранить.
Проблемы со скоростью загрузки страниц возникают, прежде всего, у владельцев более или менее крупных интернет-ресурсов. Однако иногда и обыкновенный сайт-визитка может грузиться очень долго, если его создатель пренебрег правилами оптимизации, особенно, когда веб-сайт создан на CMS.
Алгоритм получения страницы
Перед тем, как начать ускорять работу своего сайта в плане загрузки веб-страниц, необходимо ознакомиться с алгоритмами получения страницы. Для примера возьмем вполне стандартную динамичную страницу, которая включает в себя Java-скрипты, PHP-код, HTML, а также таблицу стилей.
Итак, вводя адрес определенной страницы такого вот сайта в своем браузере, вы через некоторое время видите визуальную интерпретацию страницы. В это время происходят скрытые от глаз пользователя процессы:
- браузер по протоколу http отправляет запрос на получение страницы с сервера, где она хранится; - сервер обрабатывает этот запрос, исполняя PHP-код страницы, естественно, если таковой имеется, также, если это необходимо, идет обращение сервера к базе данных, а уже после генерируется все это в html.
Вот тут узкий момент и я хотел бы обратить ваше внимание.
Обычно в CMS страницы хранятся в базе данных, а это значит, сервер мало того что выполняет php скрипт, так еще и делает запросы к базе данных что бы взять страницу из базы. А значит ваш запрос в базе данных попадает в очередь из таких же запросов как ваш. Далее получает текст из базы, завершает выполнение php скрипта, формирует страницу и в готовом виде выдаёт её браузеру.
Что получить ускорение вам надо использовать кэширование. Кэширование позволяет вам хранить уже готовый результат страницы или запросов к базе данных на диске, обходить исполнение php скрипта и не делать запросов к базе. То есть сервер просто выдает пользователю уже готовый результат который был сформирован заранее. Обычно страницы кэшируются на 15-30 минут, после чего кэш обновляется. Обязательно найдите в вашей CMS как включить кэширование, кэширование увеличит скорость формирования вашей страницы в 2-3 раза и уменьшит нагрузку на сервер.
- для исполнения Java-скриптов браузеру не нужна помощь сервера.
Теперь поговорим непосредственно о причинах слишком долгой загрузки страницы. Все дело в том, что кроме получения кода страницы, браузеру нужно направить запросы на внешние ресурсы, информация с которых содержится на данной странице, к примеру, стилевые таблицы, изображения, Java-библиотеки и так далее. Также не достаточно просто отправлять запросы, но нужно их еще и исполнять. А если в качестве фонового изображения страницы используется слишком «тяжелая» картинка, то уйдет немало времени, пока загрузится эта страница. Таким образом, время загрузки сайта зависит как от количества запросов, так и от времени их обработки.
Здесь нужно сжать картинки до меньшего размера, выделить javascripts и css в отдельные файлы и убрать в них лишние тексты и мусор.
Используем помощь сервера
Включите сжатие страниц и других файлов. Если у вас нормальный хостинг как у нас, это можно сделать через .htaccess или прямо в cPanel в разделе ""
Если через .htaccess то добавить строки:
<IfModule mod_deflate.c> AddOutPutFilterByType DEFLATE text/html text/plain text/xml text/css text/javascript application/javascript <IfModule mod_setenvif.c> # Netscape 4.x has some problems... BrowserMatch ^Mozilla/4 gzip-only-text/html # Netscape 4.06-4.08 have some more problems BrowserMatch ^Mozilla/4.0[678] no-gzip # MSIE masquerades as Netscape, but it is fine # BrowserMatch bMSIE !no-gzip !gzip-only-text/html # NOTE: Due to a bug in mod_setenvif up to Apache 2.0.48 # the above regex won't work. You can use the following # workaround to get the desired effect: BrowserMatch bMSI[E] !no-gzip !gzip-only-text/html # Don't compress images SetEnvIfNoCase Request_URI .(?:gif|jpe?g|png)$ no-gzip dont-vary </IfModule> <IfModule mod_headers.c> # Make sure proxies don't deliver the wrong content Header append Vary User-Agent env=!dont-vary </IfModule> </IfModule>
Еще можно добавить кэширование браузером картинок, скриптов и т. п. Тогда браузер каждый раз не будет запрашивать их для загрузки, а будет уже сразу держать их в кэше.
<ifModule mod_expires.c> ExpiresActive On ExpiresDefault "access plus 5 seconds" ExpiresByType text/html "access plus 10 seconds" ExpiresByType image/jpg "access 1 month" ExpiresByType image/gif "access 1 month" ExpiresByType image/jpeg "access 1 month" ExpiresByType image/png "access 1 month" ExpiresByType text/css "access 1 month" ExpiresByType application/x-javascript "access plus 1 month" ExpiresByType text/javascript "access plus 1 month" ExpiresByType application/javascript "access plus 2 week" ExpiresByType image/x-icon "access plus 2 month" ExpiresByType image/icon "access plus 2 month" ExpiresByType application/x-ico "access plus 2 month" ExpiresByType application/ico "access plus 2 month" </ifModule>
Ну и на последок, вот вам ссылка ресурса от гугла, который проверит ваш сайт и даст полезные советы по оптимизации: https://developers.google.com/speed/pagespeed/insights/?hl=ru
Итак, если ваш сайт долго грузится, то постарайтесь сделать все. Чтобы уменьшить размер страниц, используйте передовые технологии ускорения, оптимизируйте код и веб-дизайн. Все эти действия помогут сделать сайт быстрее, что будет способствовать повышению его популярности. Успехов!
Ну и конечно выбирайте качественный хостинг. Я рекомендую http://pwhost.ru
Дима
Да уж, долгие страницы — это ужас просто.
михаил
Не зря, пригревают иностранных шпеонов, хорошо разбирающихся в данном Вопросе!
Александр
Очень интересная и нужная статья.