Кэш браузера htaccess

.

Настройка кэширования через файл .htaccess

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

Ускорить загрузку Вашего сайта можно с помощью кэширования. Для решения этой задачи Вы можете воспользоваться модулем headers веб-сервера Apache. Он позволяет контролировать и изменять заголовки HTTP-запросов и HTTP-ответов. Вся суть в этом случае сводится к тому, что бы заставить браузер загрузить редко-изменяемые данные с сервера в локальный кэш всего один раз, а далее, при заходе на сайт, использовать данные из кэша. Можно установить кэширование для определенных типов файлов на строго определенное время, по истечению которого файлы будут загружены с сервера вновь. Делается это достаточно просто:

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

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

Настройка кэширования через файл .htaccess

Добавьте ниже приведенный код в Ваш файл .htaccess, что бы отключить кэширование для скриптов, предварительно внеся актуальные изменения соответственно Вашему случаю:

Как видно, здесь указаны расширения файлов, которые не требуется кэшировать, просто укажите требуемые типы файлов.

Еще одни способ управлять кэшированием — это воспользоваться модулем expires. Этот модуль контролирует установку HTTP-заголовков для кэширования данных на стороне браузера. Продолжительность хранения данных в кэше может быть установлена по времени, по последнему изменению файла или по времени доступа клиента.

Ниже представлен простой пример использования модуля expires в файле .htaccess:

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

В качестве типов файлов можно указывать различные , вот некоторые из них в качестве примера:

Кэш браузера

Материал из Umicms

Перейти к: навигация, поиск

Актуально для версии 18.

Категории: .htaccess | Вопросы установки настройки и переноса

RewriteEngine On #php_value auto_prepend_file "/libs/opaf.umi.php"#To avoid manual css and js files recompile. Debug only.   RewriteRule ^~/([0-9]+)$ tinyurl.php?id=$1[L]   RewriteCond %{REQUEST_FILENAME}-f RewriteRule ^(sys\-temp|cache|xmldb|static|packages)\/.*$ 500/[L]   RewriteCond %{REQUEST_FILENAME}!-f RewriteRule ^robots\.txt$ sbots.php?path=$1%{QUERY_STRING}[L]   RewriteCond %{REQUEST_FILENAME}!-f RewriteRule ^sitemap\.xml$ sitemap.php [L]   RewriteRule ^config\.ini$ /[L,R] RewriteRule ^install\.ini$ /[L,R] RewriteRule ^install\.log$ /[L,R] RewriteRule ^umi\.nginx\.conf$ /[L,R] RewriteRule ^dbview\.php$ /[L,R]   RewriteCond %{REQUEST_URI}!^styles RewriteCond %{REQUEST_URI}!^css RewriteCond %{REQUEST_URI}!\.css RewriteCond %{REQUEST_URI}!^js RewriteCond %{REQUEST_URI}!\.js RewriteCond %{REQUEST_URI}!^images RewriteCond %{REQUEST_URI}!^webstat RewriteCond %{REQUEST_FILENAME}!-f   RewriteRule ^(.*)\.xml$ index.php?xmlMode=force&path=$1&%{QUERY_STRING}[L]   RewriteRule ^\/?(udata|upage|uobject|ufs|usel|ulang|utype|umess|uhttp):?(\/\/)?(.*)$ releaseStreams.php?scheme=$1&path=$3?%{QUERY_STRING}[L]   RewriteRule ^(.*)\.json$ index.php?jsonMode=force&path=$1&%{QUERY_STRING}[L]   RewriteCond %{REQUEST_URI}!^styles RewriteCond %{REQUEST_URI}!^css RewriteCond %{REQUEST_URI}!\.css RewriteCond %{REQUEST_URI}!^js RewriteCond %{REQUEST_URI}!\.js RewriteCond %{REQUEST_URI}!^images   RewriteCond %{REQUEST_URI}!(\.ico|\.ICO)$ RewriteCond %{REQUEST_URI}!(\.jpg|\.JPG)$ RewriteCond %{REQUEST_URI}!(\.jpeg|\.JPEG)$ RewriteCond %{REQUEST_URI}!(\.png|\.PNG)$ RewriteCond %{REQUEST_URI}!(\.gif|\.GIF)$ RewriteCond %{REQUEST_URI}!(\.css|\.CSS)$ RewriteCond %{REQUEST_URI}!(\.js|\.JS)$   RewriteCond %{REQUEST_FILENAME}!-f   RewriteRule ^(.*)$ index.php?path=$1&%{QUERY_STRING}&umi_authorization=%{HTTP:Authorization}[L]     RewriteCond %{REQUEST_URI}(\.ico|\.ICO)$ RewriteCond %{REQUEST_URI}(\.jpg|\.JPG)$ RewriteCond %{REQUEST_URI}(\.jpeg|\.JPEG)$ RewriteCond %{REQUEST_URI}(\.png|\.PNG)$ RewriteCond %{REQUEST_URI}(\.gif|\.GIF)$ RewriteCond %{REQUEST_URI}(\.css|\.CSS)$ RewriteCond %{REQUEST_URI}(\.js|\.JS)$   RewriteCond %{REQUEST_FILENAME}!-f   RewriteRule ^(.*)$ [R=404]     <IfModule mod_mime.c> AddType application/x-java-applet .class AddType text/x-component .htc </IfModule>   <IfModule mod_security.c> SecFilterScanPOST Off </IfModule>   <Files "whatsnew.txt"> Deny from all </Files>

Защита от прямого скачивания

Блокирование вставки прямых ссылок на скачку наших файлов с других сайтов

Описание:

Предположим что мы имеем на http://htaccess.net.ru архив файлов — с расширениями .jpg, .gif, .png, .css, .mov, .swf, .exe, .rar, .avi, .vob, .zip.
Эти файлы интересны, поэтому другие могут помещать их на свои страницы прямо через гиперссылки.

Как включить кэширование браузером, рецепт для htaccess

Нам не нравится эта практика потому что она добавляет бесполезный траффик для нашего сервера.

Решение:

В то время как мы не можем на 100% защитить наши картинки от вставки на другие страницы, мы, по крайней мере, можем ограничить случаи в которых браузер посылает HTTP заголовок Referer.

#включаем работу механизма преобразований
#(при тестировании дома если ни чего не происходит проверьте
#раскоментированна ли строка, подключающая модуль в httpd.conf
#- LoadModule rewrite_module modules/mod_rewrite.so
#и параметры дающие соответсвующие разрешения для .htaccess
#- http://htaccess.net.ru/doc/htaccess/Conf-htaccess.php)
RewriteEngine on

#если _не_ пустой HTTP заголовок Referer браузера зашедшего
RewriteCond %{HTTP_REFERER} !^$

#если пришли и _не_ с сайта http://htaccess.net.ru
RewriteCond %{HTTP_REFERER} !^http://(www.)?htaccess\.net\.ru/.*$ [NC]

#и _не_ с странице, например free-gif.html — любого домена
RewriteCond %{HTTP_REFERER} !.*/free-gif\.html$

#определяем для каких объектов правила — запрещаем скачивать
#следующие файлы — расширения .jpg,.gif,.png,.css,.mov,.swf,.exe,
#.rar,.avi,.vob,.zip посетителю, скачивающему наши файлы по ссылке
#расположенной не на нашем домене (или не на странице free-gif.html
#любого домена) — сервер выдаст, когда нажмем по ссылке скачать —
#Forbidden — #You don’t have permission to access /passwd12.zip
#on this server.
RewriteRule .(jpg|gif|png|css|mov|swf|dcr|exe|rar|avi|vob|zip)$ — [F]

Если нужно ограничить скачивание лишь на один определенный каталог, то бросаем htaccess не в корневую директорию сайта, а в эту конкретную папку.

Возможно преобразование http -ссылок с помощью модуля mod _ rewrite покажется очень сложной задачей, но на самом деле это не совсем так: с опытом придет и понимание, и мастерство. Если вы внимательно читаете документацию, четко представляете необходимые преобразования ссылок и тщательно проверяете написанные вами правила, все будет работать правильно. Иначе и быть не может, не так ли?

Фриланс нового поколения. Всё за 500 рублей!

trtr2 от куда ты взял что на Апач нужно ставить права 644 ?

Starks, поставьте на .htaccess права 444 и будет вам счастье.

trtr2   02.12.2012 22:06  
>>> Для начала поставьте файлу права 0644
Где тут слово про апач? Я и имел ввиду, что ставить права надо для .htaccess.
Совсем что ли за дурака держите?

С правами все верно в .htaccess права 444, но не суть.

Использовать кэш браузера в настройках htaccess

Был случай когда у хостера оказался вирус на сервере и после заливки вылеченных файлов вирус опять вставлял код в .htaccess, нужна комплексная проверка.

trtr2   02.12.2012 18:55
Для начала поставьте файлу права 0644

Starks   02.12.2012 19:24  

trtr2   02.12.2012 22:10  
Можно. Эти права будут говорить ОС, что к файлу разрешена только операция чтения, а запись только владельцу. Поэтому если фтп-пользователь и php-пользователь — это разные пользователи, то проблема будет решена.

Но это не решит главную траблу — кто пишет в .htaccess всю вашу бяку.

Меняй все пароли — админка, фтп, ящик (переезжай на серьезный). Потом в логах смотри, откуда идет взлом. Удали сомнительные модули и скрипты. И все будет ок.

Starks   02.12.2012 19:24  

Вы случайно никаких модулей чпу не ставили? Было такое на джумле. Тоже сам менялся и выдавал 404 ошибку в новостях. Удалила, стало все норм.

Starks   02.12.2012 19:29  
чпу ставил еще пол года назад, а проблема только появилась, думаю дело не в этом

vad23   14.11.2013 08:47
Почисти .htaccess от сторонних кодов и поставь права на запись 000

Помогите, файл .htaccess или ломают, или вирус

Starks   02.12.2012 18:43   2 449  
Помогите пожалуйста кто разбирается решить проблему на сайте.
В общем уже несколько дней файл .htaccess работает не правильно, точнее в нем меняется содержимое, что дает сбой на сайте и отображается только главная страница , а остальные в 404, я уже кучу раз исправлял файл за это время, но через 1-6 часов проблема возникает снова.
 Помогите, что это и как решить проблему?(((
Пожалуйста отключите AdBlock! С AdBlock сайт работает некорректно.

.htaccess — файл дополнительной конфигурации веб-сервера Apache, а также подобных ему серверов.

Код кэш браузера в htaccess

.htaccess является подобием httpd.conf с той разницей, что действует только на каталог, в котором располагается, и на его дочерние каталоги. Возможность использования .htaccess в том или ином каталоге указывается в httpd.conf.

Установить порядок проверки и запуска индексного файла папки:

DirectoryIndex index.php index.html

Включить расширение mod_rewrite:

RewriteEngine On

Определение кодировки, в которой сервер «отдает» файлы (варианты: KOI8-R, UTF-8, Windows-1251):

AddDefaultCharset windows-1251

Определение кодировки на загружаемые файлы (варианты: KOI8-R, UTF-8, Windows-1251):

CharsetSourceEnc windows-1251

Задаем собственные страницы ошибок:

ErrorDocument 404 http://www.site.ru/404.php

Эта директива задает файл, который будет вызван при обращении к директории без указания имени файла:

DirectoryIndex index.php
DirectoryIndex index.html index.php index.shtml

Если при передаче файлов через формы (при указанном enctype=»multipart/form-data») бинарные данные повреждаются:

CharsetRecodeMultipartForms Off

Сохранение(загрузка) файлов вместо открытия:

AddType application/octet-stream .rar .doc .mov .avi .pdf .xls .mp4

Переадресация по языку:

RewriteEngine on
RewriteCond %{HTTP:Accept-Language} (ru) [NC]
RewriteRule .* КУДА [L]

Директивы Order, Allow, Deny

Order — порядок действия директив Allow и Deny. Allow — разрешить доступ. Deny — отказать в доступе.

Order Allow,Deny
Allow from all
Deny from 100.99.99.1, 100.99.99.2

Директива Options

Директива Options позволяет задать ряд общих параметров, из которых наиболее популярны следующие: ExecCGI (разрешить выполнение CGI -скриптов), FollowSymLinks (обрабатывать симлинки), Includes (разрешить SSI), IncludesNOEXEC (разрешить SSI без запуска скриптов), Indexes (показывать посетителю список файлов, если в выбранном каталоге нет файла index.html или его аналога).

Параметры записываются через пробел и могут иметь в начале знаки + или -, которые управляют наследованием.

Options +Includes

Запрет выдачи листинга каталога без индексного файла

Options -Indexes

Разрешить показывать список файлов в директории без индексного файла:

Options Indexes

Директива IndexIgnore позволяет осуществлять фильтрацию списка файлов по расширению:

IndexIgnore *.php* *.pl

Директива RewriteLock

RewriteLock file-path

Директива RewriteLock определяет имя файла синхронизации, который нужен mod_rewrite для связи с RewriteMap программами.

Директива RewriteLog

RewriteLog file-path

Директива RewriteLog устанавливает имя файла, в котором сервер ведет журнал любых происходящих действий по преобразованиям URL.

Если это имя не начинается со слэша (/) в этом случае путь считается от Server Root. В конфигурационном файле сервера эта директива должна встречаться только один раз. Для отключения ведения журнала преобразований не рекомендуется устанавливать Filename в /dev/null, потому что хотя механизм преобразований и не производит вывод в файл журнала, внутри он все ещё ведет журнализацию. Это замедлит сервер без каких-либо преимуществ для администратора! Для отключения ведения журнала либо удалите, либо закомментируйте директиву RewriteLog либо используйте RewriteLogLevel 0!

Директива RewriteLogLevel

RewriteLogLevel N

Директива RewriteLogLevel устанавливает уровень детализации журнала механизма преобразований. По-умолчанию уровень 0, означающий что журнализация не ведется, в то время как 9 или более означает что записываются практически все действия. Для отключения журнализации действий механизма преобразований просто установите уровень на 0. Это отключает ведение журнала для всех преобразований. Использование больших значений уровня очень сильно замедлит ваш сервер Apache! Используйте журнал преобразований на уровне большем чем 2 только для отладочных целей!

Переменные сервера

HTTP заголовки: соединение & запрос:
HTTP_USER_AGENT
HTTP_REFERER
HTTP_COOKIE
HTTP_FORWARDED
HTTP_HOST
HTTP_PROXY_CONNECTION
HTTP_ACCEPT
REMOTE_ADDR
REMOTE_HOST
REMOTE_USER
REMOTE_IDENT
REQUEST_METHOD
SCRIPT_FILENAME
PATH_INFO
QUERY_STRING
AUTH_TYPE
внутренние сервера: системные: специальные:
DOCUMENT_ROOT
SERVER_ADMIN
SERVER_NAME
SERVER_ADDR
SERVER_PORT
SERVER_PROTOCOL
SERVER_SOFTWARE
TIME_YEAR
TIME_MON
TIME_DAY
TIME_HOUR
TIME_MIN
TIME_SEC
TIME_WDAY
TIME
API_VERSION
THE_REQUEST
REQUEST_URI
REQUEST_FILENAME
IS_SUBREQ

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *