Ускорение загрузки сайта
февраля 3, 2008В этом посте я хочу рассказать вам о некоторых простых, и в тоже время эффективных способах ускорения загрузки вашего сайта.
Все методы основаны на LAMP + nginx + drupal , но я уверен что всё это верно и для остального тоже.
Разговор пойдёт о первой загрузке сайта, то есть когда у клиента нет ещё кеша в браузере.
-
Чем меньше количество запросов (requests) к сайту, тем лучше!
Время в секундах, это adsl линия 2.5Мб
Итак, что же у нас есть? Есть 37 запросов и 18 сек. времени. Много!
Первый запрос это собственно сам html потом пошли css, js и картинки как видно из скрина, картинки отдаются параллельно, а css и js нет!
Вывод: Уменьшить количество запросов для css и js.
В пятом друпале фишка сжатия css в один файл — билд-ин, то есть просто идём в performance и выставляем там.
Вместо 9 файло-запросов и 6 сек. получаем 1 запрос и 1.5 сек времени. Неплохо…
Теперь очередь js.
скачиваем модуль javascript_aggregator — инсталим, и получаем там-же в performance такую же фишку для js.
видим, что все наши js файлы теперь берут только 1.5 сек. вместо тех же 6 сек. Практически хорошо…
Так же к количеству запросов можно добавить и то, что если у вас есть много однотипных картинок на сайте (иконки, пиктограммы), то стоит посмотреть в сторону css спрайтов. То есть, все эти картинки пихаем в 1 файл в ряд, а потом в css для нужного места делаем offset. В результате имеем 1 запрос вместо 5-10.
Ну и напоследок, если у вас сайт уровня дигг, то все свои css и js вставляйте инлайн в html, этим вы сэкономите ещё 2-3 запроса. (Да, они не закешируются, но зато так быстрее. + можно на внутренних страницах вставлять их инклюдами, когда картинки уже в кеше).
-
Жмите весь отдаваемый контент!
Забудьте о всяких ob_start(”ob_gzhandler”);
Зачем напрягать php и себя, если можно сжимать всё веб сервером автоматически?
Ставим\включаем mod_deflate или mod_gzip для apache и всё! весь ваш контент будет сжат автоматом (почти
).
(Это утверждение правильно только если у вас есть доступ к настройкам апача)
Смотрим и сравниваем первый запрос на картинках:
В одном случае 22 Кб а в другом 6 Кб. Разница практически в 4 раза! -
Не забываем о php акселераторах
xcache, eAccelerator, APC
-
Не отдавайте клиентам статику апачем!
Этот монстр начинает жутко тормозить при больших нагрузках.
Для отдачи картинок (да и тех же css, js, flash итд.) используйте веб сервер
P.S. Для тех, кто в танке: на картинках скриншоты плагина для firefox: