Pull to refresh

И снова о speed performance вашего сайта

Reading time2 min
Views739
Уф… наконец-то я решился написать свой первый пост.

В этом посте я хочу рассказать вам о некоторых простых, и в тоже время эффективных способах ускорения загрузки вашего сайта.
Все методы основаны на LAMP + nginx + drupal, но я думаю что всё это катит и для остального тоже.
Разговор пойдёт о первой загрузке сайта, то есть когда у клиента нет ещё кеша в браузере.

Немного иллюстраций к которым я буду обращаться по ходу статьи:
в альтах прописаны имена (слева на право, с верху вниз).
Все ссылки внизу поста


рисунок 1рисунок 2рисунок 3

рисунок 4рисунок 5рисунок 6

Главное не размер а количество ©

1. Чем меньше количество запросов (requests) к вашему сайту, тем лучше!

смотрим на рис. 3
Время в секундах, это adsl линия 2.5Мб
Итак, что же у нас есть? Есть 37 запросов и 18 сек. времени. Много!
Первый запрос это собственно сам html (если < 1 сек = не трогать)
потом пошли css, js и картинки
как видно из скрина, картинки отдаются параллельно, а css и js нет!
Вывод первый: Уменьшить количество запросов для css и js
В пятом друпале фишка сжатия css в один файл — билд-ин, то есть просто идём в performance и выставляем там.

смотрим рис. 1
Вместо 9 файло-запросов и 6 сек. получаем 1 запрос и 1.5 сек времени. Неплохо… :)
Теперь очередь js.
скачиваем модуль javascript_aggregator — инсталим, и получаем там-же в performance такую же фишку для js
смотрим рис. 6 и видим, что все наши js файлы теперь берут только 1.5 сек. вместо тех же 6 сек. Практически хорошо… :)

Так же к количеству запросов можно добавить и то, что если у вас есть много однотипных картинок на сайте (иконки, пиктограммы)
то стоит посмотреть в сторону css спрайтов. То есть все эти картинки пихаем в 1 файл в ряд, а потом в css для нужного места делаем offset. В результате имеем 1 запрос вместо 5-10.

Ну и напоследок, если у вас сайт уровня дигг, то все свои css и js вставляйте инлайн в html, этим вы сэкономите ещё 2-3 запроса. (Да, они не закешируются, но зато так быстрее. + можно на внутренних страницах вставлять их инклюдами, когда картинки уже в кеше)


2. Жмите весь отдаваемый контент!

Забудьте о всяких ob_start(«ob_gzhandler»);

Зачем напрягать php и себя, если можно сжимать всё веб сервером автоматически?
Ставим\включаем mod_deflate или mod_gzip для apache и всё! весь ваш контент будет сжат автоматом (почти :) ).
(php сжатие катит только если нет прав для правки апача)
Смотрим и сравниваем рис. 3 и рис 6. (первый запрос)
в одном случае 22кб а в другом 6кб. практически в 4 раза!

Мал да удал ©

2. Не отдавайте клиентам статику апачем!

Этот монстр начинает жутко тормозить при больших нагрузках.
Для отдачи картинок (да и тех же css, js, flash итд.) используйте веб сервер nginx
Есть 3 варианта его настройки:
1 вариант:
отдельный поддомен для статики

2 вариант:
как фронт-энд

3 вариант:
как основной (единственный) веб сервер




реклама:
drupal.org/project/javascript_aggregator
sysoev.ru/nginx
developer.yahoo.com/performance/rules.html
hostingfu.com/article/running-drupal-with-clean-url-on-nginx-or-lighttpd
sittinginoblivion.com/node/251

PS. Пишу в личный блог, в другое место не могу — рылом кармой не вышел. :)
Tags:
Hubs:
Rating0
Comments0

Articles