5 простых способов “ускорения” сайта
Сперва хочу попросить прощения за долгое отсутствие обновлений на сайта. Но теперь материалы будут появляться чаще. А начнем мы с нескольких полезный советов по "ускорению Apache-a" от отличного сайта AskApache.com
Сжатие файлов стилей (.css) и JavaScript файлов (.js)
Если на вашем сервере установлен Apache 2, то просто добавьте следующие директивы в ваш файл .htaccess, а лучше в httpd.conf:
<FilesMatch "\.(js|css)$">
SetOutputFilter DEFLATE
</FilesMatch>
SetOutputFilter DEFLATE
</FilesMatch>
Директива SetOutputFilter DEFLATE добавляет модуль mod_deflate, который сжимает файлы, к выходным фильтрам, а блок FilesMatch ограничивает действие этого фильтра только файлами js и css.
Все просто и легко.
Теперь смотрим на результат.
Результат говорит сам за себя.
Также, как вариант, можно вручную сжать нужные файлы и хранить на сервере уже в сжатом виде. Это снизит нагрузку на сервер, но в случае внесения изменений, придется вновь пережимать файлы.
Теперь про поддержку сжатых файлов браузерами. Для этого обратимся на сайт http://www.http-compression.com. Ситуация такова:
- Microsoft Internet Explorer. Поддерживает сжатие с версии 4.0.
- Mozilla Firefox. Сжатие поддерживается всеми версиями. (Еще один повод пользоваться огненой лисой).
- Netscape Navigator. Поддержка сжатия началась с версии 4.06, но с серьезными ошибками, которые были устранены с версии 6.02.
- Opera. Полная поддержка сжатия включена, начиная с версии 5.12.
Использование HTTP заголовка Expires
Графика, флеш, js-файлы, файлы стилей и пр. довольно редко обновляются на сайте, поэтому пользователю, который к вам попал не в первый раз, незачем вновь скачивать эти файлы, раз они не изменились. Чтобы "научить" браузер пользователя не скачивать эти файлы, а брать их из кеша, существует HTTP заголовок Expires. Он устанавливает время, до которого браузер может использовать файл из собственного кеша.
Уточнение: Данные заголовки, помимо браузера, используют также прокси-сервера, кеширующие сервера и т.п.
В файле httpd.conf или .htaccess пишем следующее:
<FilesMatch "\.(ico|pdf|flv|jpg|jpeg|png|gif|js|css|swf)$">
Header set Expires "Thu, 15 Apr 2010 20:00:00 GMT"
</FilesMatch>
Header set Expires "Thu, 15 Apr 2010 20:00:00 GMT"
</FilesMatch>
Опять же, перечисляем расширения файлов, на которые должно распространяться действие директивы. И указываем время Thu, 15 Apr 2010 20:00:00 GMT. Т.е. около 3 лет, но можно и больше
Заголовки Cache-Control
С помощью заголовка Cache-Control можно указать, как долго прокси-сервера могут хранить файлы в кеше. Добавление в заголовок must-revalidate заставляет проверять также значение ETag для обнаружения изменений.
# 480 недель
<FilesMatch "\.(ico|pdf|flv|jpg|jpeg|png|gif|js|css|swf)$">
Header set Cache-Control "max-age=290304000, public"
</FilesMatch>
<FilesMatch "\.(ico|pdf|flv|jpg|jpeg|png|gif|js|css|swf)$">
Header set Cache-Control "max-age=290304000, public"
</FilesMatch>
# 2 дня
<FilesMatch "\.(xml|txt)$">
Header set Cache-Control "max-age=172800, public, must-revalidate"
</FilesMatch>
<FilesMatch "\.(xml|txt)$">
Header set Cache-Control "max-age=172800, public, must-revalidate"
</FilesMatch>
# 2 часа
<FilesMatch "\.(html|htm)$">
Header set Cache-Control "max-age=7200, must-revalidate"
</FilesMatch>
<FilesMatch "\.(html|htm)$">
Header set Cache-Control "max-age=7200, must-revalidate"
</FilesMatch>
Либо вместе с заголовком Expires
<FilesMatch "\.(ico|pdf|flv|jpg|jpeg|png|gif|js|css|swf)$">
Header set Cache-Control "public"
Header set Expires "Thu, 15 Apr 2010 20:00:00 GMT"
</FilesMatch>
Header set Cache-Control "public"
Header set Expires "Thu, 15 Apr 2010 20:00:00 GMT"
</FilesMatch>
Отключение заголовка ETag
Механизм ETag (Entity Tag) предназначен для обнаружения новых версий запрошенных файлов. Когда сервер отсылает клиенту файл, он добавляет заголовок ETag, в который записывает хеш отправляемого файла.
Клиент же, при повторном запросе, добавляет заголовок If-None-Match, значение которого равно хешу файла в кеше. Если значение совпадают, то сервер возвращает ответ HTTP/1.1 304 Not Modified, а если не совпадают, тогда возвращает новую версию файла.
Таким образом, удаление заголовка ETag в ответах сервера отключает этот механизм. Что заставляет кеш клиента использовать только значения Expires и Cache-Control (если вы не используете Expires и Cache-Control не удаляйте ETag!). Выигрыш такого подхода в том, что между клиентом и сервером отпадает надобность обмениваться запросами проверки новых версий (If-None-Match и 304 Not Modified).
Отключение заголовка делается следующим образом:
Header unset ETag
FileETag None
FileETag None
А вот пример обмена запросами между клиентом и сервером с использованием ETag.
Ответ сервера на первый запрос файла /i/yahoo.gif:
HTTP/1.1 200 OK
Last-Modified: Tue, 12 Dec 2006 03:03:59 GMT
ETag: "10c24bc-4ab-457e1c1f"
Content-Length: 12195
Last-Modified: Tue, 12 Dec 2006 03:03:59 GMT
ETag: "10c24bc-4ab-457e1c1f"
Content-Length: 12195
Повторный запрос файла /i/yahoo.gif и ответ сервера:
GET /i/yahoo.gif HTTP/1.1
Host: us.yimg.com
If-Modified-Since: Tue, 12 Dec 2006 03:03:59 GMT
If-None-Match: "10c24bc-4ab-457e1c1f"
Host: us.yimg.com
If-Modified-Since: Tue, 12 Dec 2006 03:03:59 GMT
If-None-Match: "10c24bc-4ab-457e1c1f"
HTTP/1.1 304 Not Modified
Удаление заголовка Last-Modified
Удаление заголовка Last-Modified вместе с заголовком ETag позволит полностью избежать использования запросов проверки новых версий файлов If-Modified-Since и If-None-Match. Таким образом файлы будут кешироваться только на основании значений Cache-Control и Expires.
Примечание: Не удаляйте Last-Modified и ETag для .html файлов.
Делается это следующим образом:
<FilesMatch "\.(ico|pdf|flv|jpg|jpeg|png|gif|js|css)$">
Header unset Last-Modified
</FilesMatch>
Header unset Last-Modified
</FilesMatch>
Вот и все. Продуманное и правильное использование сжатия и кеширование позволит существенно сократить трафик между клиентом и сервером. Успехов.
Комментарий от cernos — Сентябрь 22, 2007 @ 1:31 pm
Комментарий от Lexa — Сентябрь 24, 2007 @ 9:14 pm
Комментарий от Николай — Октябрь 1, 2007 @ 2:13 pm
Header unset Last-Modified
Комментарий от vital — Октябрь 7, 2007 @ 4:15 pm
Комментарий от Akel — Октябрь 13, 2007 @ 10:24 pm
Комментарий от Alex — Ноябрь 23, 2007 @ 7:20 am
Комментарий от Avenger — Ноябрь 25, 2007 @ 3:19 pm
Комментарий от Раскрутка сайтов — Декабрь 8, 2007 @ 10:32 am
Она весит в пять раз больше чем все остальное у меня:css,html,img
Страница из-за нее весит примерно 500 кб. Сейчас попробую совет автора
Комментарий от Groove — Декабрь 14, 2007 @ 7:24 am
Комментарий от игрушки для детей — Декабрь 16, 2007 @ 12:31 am
Комментарий от подарки для женщин — Декабрь 16, 2007 @ 12:32 am
Комментарий от кальяны интернет магазин — Декабрь 16, 2007 @ 12:32 am
Комментарий от салон красоты прически — Декабрь 16, 2007 @ 12:35 am
Комментарий от эпиляция , косметология пилинг — Декабрь 16, 2007 @ 12:37 am
Комментарий от ногти — Декабрь 16, 2007 @ 12:38 am
Комментарий от Ретро — Декабрь 23, 2007 @ 4:39 pm
Комментарий от Сергей — Январь 10, 2008 @ 7:05 pm
Комментарий от Руслан Богданов — Январь 11, 2008 @ 3:03 pm
Комментарий от school-one — Январь 25, 2008 @ 11:10 am
Комментарий от Бесплатные мелодии — Март 3, 2008 @ 11:29 pm
Комментарий от Серега — Март 10, 2008 @ 11:27 pm
Комментарий от Aleks — Март 19, 2008 @ 12:21 pm
Комментарий от йА Кревед — Март 21, 2008 @ 1:03 am
Комментарий от Сергей — Март 26, 2008 @ 4:09 pm
Комментарий от Thinker — Март 31, 2008 @ 8:04 am
Комментарий от Lebnik — Апрель 12, 2008 @ 9:27 am
Комментарий от Макияж - Ksenka — Апрель 27, 2008 @ 2:05 pm
Комментарий от Сергей — Июнь 6, 2008 @ 10:45 am
Комментарий от Андрей — Июнь 6, 2008 @ 10:54 am
Комментарий от Миша — Июнь 13, 2008 @ 10:16 pm
Комментарий от blu-ray — Июнь 14, 2008 @ 11:52 am
Комментарий от Anonymous — Июнь 24, 2008 @ 2:37 pm
Комментарий от pnzAuto — Июнь 24, 2008 @ 2:39 pm
Комментарий от Адлер в Сочи — Июнь 25, 2008 @ 2:36 pm
Комментарий от ВикторТрактор — Июнь 26, 2008 @ 5:27 pm
Комментарий от Багамы — Июнь 27, 2008 @ 9:55 pm
Комментарий от Ivan — Июль 6, 2008 @ 10:02 am
Комментарий от камень — Июль 8, 2008 @ 10:04 pm
Комментарий от Гатчина — Июль 9, 2008 @ 10:06 pm
Комментарий от Михаил Коломенский — Июль 10, 2008 @ 6:33 pm
Комментарий от devr — Июль 13, 2008 @ 4:11 pm
Комментарий от megaObzo — Июль 17, 2008 @ 1:06 pm
Комментарий от Kenno — Июль 20, 2008 @ 12:30 am
Комментарий от Андрей — Июль 28, 2008 @ 4:41 pm
Комментарий от рембрат — Август 2, 2008 @ 1:10 pm
Комментарий от Александр — Август 8, 2008 @ 2:38 am
Комментарий от Кириллыч — Август 16, 2008 @ 3:18 am
Комментарий от Ремонт — Август 19, 2008 @ 10:50 pm
Комментарий от Alex — Август 23, 2008 @ 2:06 pm
Комментарий от Строительство — Август 26, 2008 @ 12:35 am
Комментарий от Эдик — Август 26, 2008 @ 10:57 pm
Комментарий от серГ — Август 26, 2008 @ 11:00 pm
__________________
/go.php?url=/go.php?url=http://anokhin.org/
Комментарий от андрюха — Август 29, 2008 @ 2:07 pm
Комментарий от Маляр — Август 30, 2008 @ 5:18 pm
Комментарий от boberov — Август 31, 2008 @ 4:36 pm
Комментарий от aliahub — Сентябрь 1, 2008 @ 10:23 pm
Комментарий от yahud — Сентябрь 3, 2008 @ 5:56 pm
Комментарий от молотильщик — Сентябрь 5, 2008 @ 1:42 am
Классно!
Комментарий от Dmitriy — Сентябрь 5, 2008 @ 6:15 am
При многа благодарен!
Комментарий от Dmitriy — Сентябрь 5, 2008 @ 6:16 am
Комментарий от stanin — Сентябрь 5, 2008 @ 10:56 am
Комментарий от Alex — Сентябрь 9, 2008 @ 1:35 pm
Комментарий от Голосочек — Сентябрь 9, 2008 @ 9:49 pm
Комментарий от Владимир — Сентябрь 9, 2008 @ 9:51 pm
Сохраню в своей статье ссылку на этот мануал, а позже, если вы не против переработаю в формате моего сайта.
Спасибо.
Комментарий от DrupalCookBook.ru - — Сентябрь 9, 2008 @ 10:44 pm
Комментарий от Alex — Сентябрь 10, 2008 @ 12:25 am
________________________
/go.php?url=/go.php?url=http://jobpiter.ru/
Комментарий от чувак — Сентябрь 10, 2008 @ 8:42 pm
_________________________
/go.php?url=/go.php?url=http://www.runedvizhim0st.ru/
Комментарий от васек — Сентябрь 14, 2008 @ 6:27 pm
_________________________
/go.php?url=/go.php?url=http://utens.ru/
Комментарий от чудоджмель — Сентябрь 14, 2008 @ 6:32 pm
Комментарий от Света — Сентябрь 16, 2008 @ 5:05 pm
____________________________
/go.php?url=http://visionfaq.ru/
Комментарий от ритуля — Сентябрь 17, 2008 @ 8:43 pm
____________________________
/go.php?url=http://ru-kosmetika.ru/
/go.php?url=http://mladost.info/
Комментарий от иванов — Сентябрь 17, 2008 @ 8:47 pm
Комментарий от Nick — Сентябрь 18, 2008 @ 1:34 pm
Комментарий от Senyor — Сентябрь 20, 2008 @ 12:45 am
_______________
/go.php?url=http://medik-blog.ru/
Комментарий от magamozg — Сентябрь 20, 2008 @ 2:59 pm
____________________
/go.php?url=http://www.uncledel.com/
/go.php?url=http://autotags.ru/
Комментарий от андрей васильевич — Сентябрь 20, 2008 @ 3:01 pm
Комментарий от Альби — Сентябрь 23, 2008 @ 7:42 pm
Комментарий от yyppyy — Сентябрь 28, 2008 @ 1:01 am
Комментарий от МИЛАН — Сентябрь 30, 2008 @ 4:44 pm
Комментарий от Олег — Октябрь 1, 2008 @ 4:37 pm
Комментарий от Debitor — Октябрь 2, 2008 @ 5:02 am
Комментарий от Оригами — Октябрь 15, 2008 @ 10:23 pm
Комментарий от Алексей — Октябрь 18, 2008 @ 11:13 am
Комментарий от Том — Октябрь 19, 2008 @ 3:41 am
Комментарий от Жана — Октябрь 20, 2008 @ 11:24 am
Комментарий от johnant — Октябрь 24, 2008 @ 10:42 pm
Комментарий от Аркадий — Октябрь 31, 2008 @ 9:36 am
Комментарий от Роберт — Октябрь 31, 2008 @ 9:37 am
Комментарий от Наталья — Октябрь 31, 2008 @ 9:40 am
Комментарий от Василий — Октябрь 31, 2008 @ 3:16 pm
интересно и главное важно
Комментарий от Настасия — Ноябрь 4, 2008 @ 7:57 pm
Комментарий от Ким — Ноябрь 8, 2008 @ 3:26 pm
Комментарий от dik — Ноябрь 17, 2008 @ 1:57 pm
Комментарий от shred — Ноябрь 19, 2008 @ 2:24 pm
Комментарий от Мартин — Ноябрь 23, 2008 @ 10:59 am
Комментарий от lordus — Ноябрь 23, 2008 @ 11:00 am
Комментарий от Леонид — Ноябрь 23, 2008 @ 11:02 am
Комментарий от uristakauf — Ноябрь 28, 2008 @ 3:18 pm
Комментарий от Сомелье — Декабрь 1, 2008 @ 11:55 pm
Комментарий от den_1600 — Декабрь 2, 2008 @ 3:09 pm
Комментарий от yura — Декабрь 2, 2008 @ 3:10 pm
Комментарий от dizoor — Декабрь 2, 2008 @ 3:12 pm
Комментарий от puh1311 — Декабрь 2, 2008 @ 3:13 pm
Комментарий от pikem — Декабрь 4, 2008 @ 11:27 am
Комментарий от Каширин С. — Декабрь 4, 2008 @ 5:48 pm
Комментарий от wizard — Декабрь 5, 2008 @ 5:57 pm
Комментарий от Евгений Леонидович — Декабрь 5, 2008 @ 9:07 pm
сравнивай, замеряй, экспериментируй.
Комментарий от seolamer — Декабрь 8, 2008 @ 2:36 pm
Комментарий от Аделина — Декабрь 9, 2008 @ 12:36 pm
Комментарий от ilnar — Декабрь 9, 2008 @ 12:38 pm
Комментарий от Злата — Декабрь 14, 2008 @ 5:51 pm
Комментарий от egor9305 — Декабрь 16, 2008 @ 5:55 pm
Комментарий от badboyz — Декабрь 16, 2008 @ 11:07 pm
Комментарий от пьер — Декабрь 20, 2008 @ 5:10 pm
Комментарий от Михаил — Декабрь 21, 2008 @ 3:44 pm
Комментарий от sarmad — Декабрь 22, 2008 @ 11:22 am
Комментарий от Леонард — Декабрь 22, 2008 @ 4:43 pm
Комментарий от kazyla — Декабрь 23, 2008 @ 10:57 am
Комментарий от relaxing — Декабрь 23, 2008 @ 11:44 pm
Комментарий от beagler — Декабрь 26, 2008 @ 9:55 am
Комментарий от akuba — Декабрь 29, 2008 @ 3:36 pm
Комментарий от niceman — Январь 2, 2009 @ 4:34 pm
Комментарий от Альбина — Январь 4, 2009 @ 12:02 pm
Комментарий от secundum — Январь 14, 2009 @ 5:09 pm
Комментарий от Павел — Январь 19, 2009 @ 11:44 am
Комментарий от Чеширский Кот — Январь 19, 2009 @ 6:05 pm
Комментарий от Jaski — Январь 23, 2009 @ 11:26 pm
Комментарий от Александра — Январь 24, 2009 @ 5:34 pm
Комментарий от FIFA — Январь 24, 2009 @ 5:36 pm
Комментарий от Павел — Январь 24, 2009 @ 9:52 pm
Комментарий от Антон — Январь 25, 2009 @ 11:32 pm
Комментарий от sise — Январь 26, 2009 @ 8:57 pm
Комментарий от Альбина — Январь 28, 2009 @ 4:03 pm
Комментарий от Павел — Январь 28, 2009 @ 4:04 pm
Комментарий от Станислав Евченич — Январь 28, 2009 @ 10:09 pm
Комментарий от Анимешка — Январь 30, 2009 @ 6:03 pm
Комментарий от Карл — Январь 31, 2009 @ 8:22 pm
Комментарий от Мариана — Февраль 2, 2009 @ 10:25 am
Комментарий от Алла — Февраль 4, 2009 @ 4:27 pm
Комментарий от Артём — Февраль 5, 2009 @ 9:59 am
Комментарий от Герасим — Февраль 5, 2009 @ 8:03 pm
Комментарий от sise — Февраль 9, 2009 @ 5:16 am
Комментарий от Май — Февраль 9, 2009 @ 12:20 pm
Комментарий от Анастасия — Февраль 9, 2009 @ 1:42 pm
Комментарий от Ева — Февраль 9, 2009 @ 5:42 pm
Комментарий от Филипп — Февраль 9, 2009 @ 11:32 pm
Комментарий от Артём — Февраль 10, 2009 @ 12:48 am
SetOutputFilter DEFLATE
вставил в .htacess - htpekmnfnf ytn djj,ot/
Когда же сделал
SetOutputFilter DEFLATE
Заработало, но как?
посмотрите на скрин:
/go.php?url=/go.php?url=http://www.image-share.com/image.php?img=4/247.jpg
часть css сжимаются, а часть нет.
С чем это связано и как это исправить?
Комментарий от Дмитрий — Февраль 11, 2009 @ 12:39 pm
SetOutputFilter DEFLATE
вставил в .htacess - ноль результата.
Когда же сделал
SetOutputFilter DEFLATE
Заработало, но как?
посмотрите на скрин.
Часть css сжимаются, а часть нет.
С чем это связано и как это исправить?
Комментарий от Дмитрий — Февраль 11, 2009 @ 12:42 pm
Комментарий от Звезда — Февраль 11, 2009 @ 4:43 pm
Комментарий от Guffi — Февраль 11, 2009 @ 9:34 pm
Комментарий от Зарина — Февраль 12, 2009 @ 1:21 am
Комментарий от willibilli — Февраль 12, 2009 @ 2:23 pm
Комментарий от Диана — Февраль 13, 2009 @ 12:14 am
Комментарий от Домены — Февраль 13, 2009 @ 11:27 pm
Комментарий от Станислав — Февраль 14, 2009 @ 12:44 am
Комментарий от piner — Февраль 27, 2009 @ 12:06 pm
Комментарий от nivedano — Март 1, 2009 @ 7:26 pm
Комментарий от Мавр — Март 2, 2009 @ 6:03 pm
Комментарий от Наталья — Март 4, 2009 @ 8:32 pm
Комментарий от Аделина — Март 4, 2009 @ 8:35 pm
Комментарий от Карина — Март 9, 2009 @ 4:14 pm
вместо www.kzkzkz.kz/1.jpg так не прокатывает
Комментарий от Иван — Март 15, 2009 @ 1:33 pm
Комментарий от Андрей — Март 17, 2009 @ 9:48 am
Комментарий от Adminko — Март 17, 2009 @ 8:05 pm
Комментарий от Наталья — Март 17, 2009 @ 8:39 pm
Комментарий от Валентинов — Март 19, 2009 @ 2:27 pm
Комментарий от scape — Март 19, 2009 @ 10:18 pm
Комментарий от Макс Пименов — Март 24, 2009 @ 9:33 pm
Комментарий от Олег — Март 27, 2009 @ 5:29 pm
Комментарий от базы данных — Март 29, 2009 @ 4:10 pm
Комментарий от Маргарита — Март 31, 2009 @ 10:45 am
Комментарий от Alsu — Апрель 1, 2009 @ 8:04 am
Комментарий от Зоя — Апрель 3, 2009 @ 1:27 pm
Комментарий от Арина — Апрель 3, 2009 @ 1:28 pm
Комментарий от Лука — Апрель 6, 2009 @ 4:16 pm
Комментарий от Лука — Апрель 6, 2009 @ 4:18 pm
Комментарий от grang — Апрель 6, 2009 @ 4:20 pm
Комментарий от vasiliy79 — Апрель 6, 2009 @ 4:21 pm
Комментарий от Маргарита — Апрель 6, 2009 @ 9:22 pm
Комментарий от Киевский Айтишник — Апрель 7, 2009 @ 2:36 pm
Комментарий от валик — Апрель 10, 2009 @ 7:15 pm
Комментарий от Дмитрий — Апрель 16, 2009 @ 8:19 pm