• Автор:

    Flesha
  • Добавлено:

    ноя 17, 2012
  • Комментариев:

    0
  • Просмотров:

    2 556

Увеличение скорости загрузки сайта на DLE (часть 2)

Увеличение скорости загрузки сайта на DLE (часть 2)

Все браузеры давно умеют кешировать статические данные (картинки, скрипты, css и т.д.), но для этого веб-сервер должен сообщить браузеру на сколько он должен кешировать эти данный с момента первого обращения к этим данным. Т.е. Если пользователь зашёл на сайт - загрузились к примеру 4 скрипта по 10кб - это 40кб, вроде бы не страшно, однако при каждом переходе по страницам сайта браузер будет загружать эти скрипты вновь и вновь, потому что думает, что скрипт обновляется при каждом обращении к нему. Поэтому логично "сказать" браузеру, что бы он проверял не обновился ли этот скрипт не при каждом обращении, а лишь раз в месяц или раз в год.

Как раз для указания "времени жизни" закешированных данных, правильной обработки HTTP-заголовков браузерами и предназначен этот код:

<IfModule mod_expires.c>
ExpiresActive on

ExpiresDefault "access plus 1 month"

# cache.appcache needs re-requests in FF 3.6 (thanks Remy ~Introducing HTML5)
ExpiresByType text/cache-manifest "access plus 0 seconds"

# html
ExpiresByType text/html "access plus 0 seconds"

# XML
ExpiresByType text/xml "access plus 0 seconds"
ExpiresByType application/xml "access plus 0 seconds"

# RSS
ExpiresByType application/rss+xml "access plus 1 hour"

# Favicon
ExpiresByType image/x-icon "access plus 1 week"

# Картинки
ExpiresByType image/gif "access plus 1 month"
ExpiresByType image/png "access plus 1 month"
ExpiresByType image/jpeg "access plus 1 month"
ExpiresByType image/jpg "access plus 1 month"

# HTC файлы (например css3pie)
ExpiresByType text/x-component "access plus 1 month"

# Нестандартные шрифты сайта
ExpiresByType application/x-font-ttf "access plus 1 month"
ExpiresByType font/opentype "access plus 1 month"
ExpiresByType application/x-font-woff "access plus 1 month"
ExpiresByType image/svg+xml "access plus 1 month"
ExpiresByType application/vnd.ms-fontobject "access plus 1 month"

# CSS и javascript
ExpiresByType text/css "access plus 1 year"
ExpiresByType application/javascript "access plus 1 year"

</IfModule>

# Cache-Control браузера
<ifModule mod_headers.c>
# 30 дней
<filesMatch "\.(ico|pdf|flv|jpg|jpeg|png|gif|swf)$">
Header set Cache-Control "max-age=2592000, public"
</filesMatch>
# 30 дней
<filesMatch "\.(css|js)$">
Header set Cache-Control "max-age=2592000, public"
</filesMatch>
# 2 дня
<filesMatch "\.(xml|txt)$">
Header set Cache-Control "max-age=172800, public, must-revalidate"
</filesMatch>
# 1 день
<filesMatch "\.(html|htm|php)$">
Header set Cache-Control "max-age=172800, private, must-revalidate"
</filesMatch>
</ifModule>

<IfModule mod_setenvif.c>
#Эта конструкция для говнобраузера
#Запрет отдачи HTTP-заголовков Vary
BrowserMatch "MSIE" force-no-vary
BrowserMatch "Mozilla/4.[0-9]{2}" force-no-vary
</IfModule>


Как видно код разбит на блоки-условия. Если какой то из используемых в коде модулей не включен - блок будет пропущен.
Так же в коде прокомментированы сроки, на которые кешируются статические данные и представлен фикс для IE.

Представленный код - результат сбора данных с разных источников и оптимизации его под DLE. Для подключения его нужно вставить в самое начало файла .htaccess и обновить кеш в админке.

Автор: https://pafnuty.name/ dle
Вернуться
Информация
Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.