Ускорение загрузки сайта

февраля 3, 2008

В этом посте я хочу рассказать вам о некоторых простых, и в тоже время эффективных способах ускорения загрузки вашего сайта.

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

  1. Чем меньше количество запросов (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 запроса. (Да, они не закешируются, но зато так быстрее. + можно на внутренних страницах вставлять их инклюдами, когда картинки уже в кеше).

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

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

    В одном случае 22 Кб а в другом 6 Кб. Разница практически в 4 раза!
  3. Не забываем о php акселераторах

    xcache, eAccelerator, APC

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

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

[Источник]
P.S. Для тех, кто в танке: на картинках скриншоты плагина для firefox: Firebug