• Форум посвящен самостоятельной (бесплатной) защите от ддос атак.
    Есть мануалы по настройке сервера от Ddos для сисадминов и готовые инструменты от ддос-атак для вебмастеров.

    Простое, эффективное, точное и проверенное бесплатное решение от мощных ддос-атак: PHP скрипт + Cloudflare, с панелью управления.

Кэширование в htaccess для снижения нагрузки на сайт

admin

admin

Администратор
Администрация
#1
Если контент вашего сайта обновляется нечасто, а хостинг недорогой, будет полезно снизить нагрузку на сервер с помощью настроек htaccess.

Впрочем, любого сайт есть контент, который более или менее статичен, даже если это популярный форум или блог. Например, те же картинки, или файлы стилей. В htaccess можно их кэшировать с помощью модулей mod_headers и mod_expires. У провайдера, как правило, стоит один из этих модулей, поэтому привожу настройки для обоих.
Код:
<ifModule mod_headers.c>
    #кэшировать html и htm файлы на сутки
    <FilesMatch "\.(html|htm)$">
        Header set Cache-Control "max-age=86400"
    </FilesMatch>
    #кэшировать css и javascript на месяц  (выставьте меньше, если сайт часто дорабатывается)
    <FilesMatch "\.(js|css)$">
        Header set Cache-Control "max-age=2592000"
    </FilesMatch>
    #кэшировать изображения на месяц
    <FilesMatch "\.(gif|jpg|jpeg|png)$">
        Header set Cache-Control "max-age=2592000"
    </FilesMatch>
    #отключить кэширование для динамических страниц
    <FilesMatch "\.(php)$">
        Header unset Cache-Control
    </FilesMatch>
</IfModule>

<ifModule mod_expires.c>
    ExpiresActive On
    #по умолчанию кеш в 60 секунд
    ExpiresDefault "access plus 60 seconds"
    #кэшировать изображения на месяц
    ExpiresByType image/x-icon "access plus 2592000 seconds"
    ExpiresByType image/jpeg "access plus 2592000 seconds"
    ExpiresByType image/png "access plus 2592000 seconds"
    ExpiresByType image/gif "access plus 2592000 seconds"
    #кэшировать css и javascript на одну неделю
    ExpiresByType text/css "access plus 604800 seconds"
    ExpiresByType text/javascript "access plus 604800 seconds"
    ExpiresByType application/javascript "access plus 604800 seconds"
    ExpiresByType application/x-javascript "access plus 604800 seconds"
    #кэшировать html и htm файлы на один день
    ExpiresByType text/html "access plus 43200 seconds"
    #кэшировать xml файлы на день
    ExpiresByType application/xhtml+xml "access plus 86400 seconds"
</ifModule>
Если на сервере работают оба модуля, то предпочтительнее использовать модуль mod_headers. Чтобы проверить, какой из модулей у вас включен, уберите условие ifModule и поочередно вставляйте в htaccess настройки сначала от одного, потом от другого модуля. Если модуль не работает, выдаст ошибку 500.
 
DeathStar

DeathStar

Member
#2
для Nginx
Код:
location ~* ^.+\.(ogg|ogv|svg|svgz|eot|otf|woff|mp4|ttf|rss|atom|jpg|jpeg|gif|png|ico|zip|tgz|gz|rar|bz2|doc|xls|exe|ppt|tar|mid|midi|wav|bmp|rtf|css|js)$ {
access_log off;
log_not_found off;
expires max;
}
 
Последнее редактирование модератором:
admin

admin

Администратор
Администрация
#3
На css и js будет лучше поставить expires поменьше. Не вижу большого смысла ставить максимальный кэш - это создает больше неудобств, чем пользы, особенно на малозагруженных сайтах (500-1000 хостов в сутки)

Можно сделать так, чтобы для добавляемых на сайт изображений использовать, скажем, расширение jpg, а для изображений, участвующих в дизайне сайта или баннеров, расширение jpeg. Для дизайн-изображений можно выставить кеш поменьше.
Код:
location ~* ^.+\.(ttf|rss|atom|ico|zip|tgz|gz|rar|bz2|doc|xls|exe|ppt|tar|rtf|jpg|gif)$ {
access_log off;
log_not_found off;
expires max;
}

location ~* ^.+\.(jpeg|css|js|png)$ {
access_log off;
log_not_found off;
expires 7d;
}
 
Последнее редактирование:
DeathStar

DeathStar

Member
#4
ну у меня проекты обычно уже на сервере готовые , куда правок кроме как наполнение контента - не делаются... ну и 7 дней тож норм. У меня кеширование средствами Nginx еще сделано везде ( Joomla / WP )
 
Последнее редактирование модератором:
Сверху