Apache: Разгоняем сайт

Цель: максимальная скорость работы веб-приложения.
Задача: включение кеширования на Apache сервере.
Решение:

  1. Создаем в корне сайта файл .htaccess
  2. Проверяем, какой модуль включен на хостинге (mod_headers или mod_expires):
    1. Вставляем код:
      ExpiresActive On
      ExpiresDefault A0
      
      # 1 YEAR
      <FilesMatch "\.(ico)$">
      ExpiresDefault A9030400
      </FilesMatch>
      
      # 6 month
      <FilesMatch "\.(flv|jpg|jpeg|png|gif|swf)$">
      ExpiresDefault A14515200
      </FilesMatch>
      
      # 3 HOUR
      <FilesMatch "\.(txt|xml|js|css)$">
      ExpiresDefault A10800"
      </FilesMatch>
      

      Если при загрузке сайта вылетает ошибка сервера, значит не включен mod_expires.

    2. Вставляем код
      <FilesMatch "\.(ico|gif|jpg|jpeg|png|flv|pdf)$">
        Header set Cache-Control "max-age=29030400"
      </FilesMatch>
      # WEEK
      <FilesMatch "\.(js|css|swf)$">
        Header set Cache-Control "max-age=604800"
      </FilesMatch>
      # 45 MIN
      <FilesMatch "\.(html|htm|txt)$">
        Header set Cache-Control "max-age=2700"
      </FilesMatch>
      

      Если при загрузке сайта вылетает ошибка сервера — не включен mod_headers.

  3. Если оба модуля подключены — оставляем вариант для mod_expires. Как утверждает Google, заголовок expires поддерживается бОльшим количеством браузеров.
  4. Если ни один модуль не включен и есть рутовски доступ к серверу по ssh — включаем модуль mod_exparies с помощью командной строки (создаем символическую ссылку и перезагружаем веб-сервер):
    ln -s /etc/apache2/mods-available/expires.load /etc/apache2/mods-enabled/expires.load
    /etc/init.d/apache2 restart
    

Вот и всё, довольно просто, правда?) Зато сколько пользы,)

Пояснение

И все-таки стоит пояснить, почему кеширование так важно сегодня.

Не так давно Google объявил, что теперь скорость работы сайта учитывается при поисковой выдачи. Это очень правильный шаг на встречу не только пользователям интернета, но и хорошее подспорье разработчикам, поскольку кеширование позволяет загружаться сайтам быстрее и уменьшает трафик, что снижает нагрузку на сервер.

Чтобы проверить скорость работы своего сайта удобней всего пользоваться фирменным дополнением к Firebug от Google— PageSpeed.

Скриншон работы PageSpeed

Скриншот работы PageSpeed

Проведя быстрый тест, PageSpeed сообщит о проблемах производительности сайта и порекомендует пути их решения. Хорошая штука.)

Также есть аналогичный инструмент от Yahoo! — YSlow. Очень удобная программка, я ей тоже пользуюсь — бывает, он замечает то, что PageSpeed упустил.

Ссылки в записи

Теперь буду добавлять к статьям этот блок со ссылками на используемые ресурсы в записи. Такая штука более академична что ли.)

  • Рекомендации Google по включению механизмов кеширования
  • Подробная справочная статья по включению кеширования в Apache
  • Заявление Google о включении учета скорости работы сайта в поисковом ранжировании
  • Firebug — один из удобнейших инструментов веб-разработчика, расширение для FireFox
  • PageSpeed — дополнение к Firebug от Google для выявления проблем производительности сайта
  • YSlow — дополнение к Firebug от Yahoo!  для выявления проблем производительности сайта