mod_expires - модуль Apache, позволяющий указывать HTTP-заголовки Expires, давая указания кешировать статические файлы в пользовательском браузере. В результате работы модуля имеем снижения трафика и увеличение скорости отображения страниц.
По умолчанию, Apache собирается уже с поддержкой mod_expires. Мы можем проверить его наличие командой:
Расположение файла httpd.conf:
Запретить любое кеширование:
mod_headers - this module provides directives to control and modify HTTP request and response headers. Headers can be merged, replaced or removed
http://httpd.apache.org/docs/2.2/mod/mod_headers.html
ETag - уникальный хеш («отпечаток») байтов файла. При запросе файла с сервера, браузер сначала получает ETag хеш файла на сервере, если локальный и серверный хеши совпадают, то браузер берет файл из локального кеша, а сервер не отправляет файл.
http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html
http://www.w3.org/Protocols/rfc2616/rfc2616-sec13.html#sec13.5.1
http://www.mnot.net/cache_docs/#PRAGMA
http://ru.wikipedia.org/wiki/%D0%A1%D0%BF%D0%B8%D1%81%D0%BE%D0%BA_%D0%B7%D0%B0%D0%B3%D0%BE%D0%BB%D0%BE%D0%B2%D0%BA%D0%BE%D0%B2_HTTP
http://ru.wikipedia.org/wiki/%D0%9C%D0%B5%D1%82%D0%B0-%D1%82%D0%B5%D0%B3%D0%B8#.D0.9Ce.D1.82a-.D1.82e.D0.B3_Pragma
httpd -M | grep mod_expires
Расположение файла httpd.conf:
httpd -V | grep ROOT
# кеширование в браузере на стороне пользователя <IfModule mod_expires.c> #Подключаем модуль ExpiresActive On ExpiresDefault "access 7 days" #по умолчанию кеш в 5 секунд ExpiresDefault "access plus 5 seconds" #кэшировать флэш и изображения на месяц ExpiresByType image/x-icon "access plus 2592000 seconds" ExpiresByType image/jpeg "access plus 2592000 seconds" ExpiresByType image/jpg "access plus 1 year" ExpiresByType image/png "access plus 2592000 seconds" ExpiresByType image/gif "access plus 2592000 seconds" ExpiresByType application/x-shockwave-flash "access plus 2592000 seconds" #кэшировать css, javascript и текстовые файлы на одну неделю ExpiresByType text/css "access plus 604800 seconds" ExpiresByType text/x-javascript "access 1 year" 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 600 seconds" </IfModule>Короткая запись:
<ifmodule mod_expires.c> <filesmatch ".(jpg|jpeg|gif|png|ico|css|js)$"> ExpiresActive on ExpiresDefault "access plus 1 year" </filesmatch> </ifmodule>
Запретить любое кеширование:
<IfModule mod_headers.c>Header set Cache-Control: "no-cache, pre-check=0, post-check=0, max-age=0" Header set Expires "Thu, 15 Apr 1999 20:00:00 GMT" Header set Pragma: no-cache Header unset ETag Header unset Last-Modified FileETag None</IfModule> <IfModule mod_expires.c> ExpiresActive On ExpiresDefault "now" </IfModule>
mod_headers - this module provides directives to control and modify HTTP request and response headers. Headers can be merged, replaced or removed
http://httpd.apache.org/docs/2.2/mod/mod_headers.html
<ifModule mod_headers.c> #кэшировать html и htm файлы на один день <FilesMatch "\.(html|htm)$"> Header set Cache-Control "max-age=43200" </FilesMatch> #кэшировать css, javascript и текстовые файлы на одну неделю <FilesMatch "\.(js|css|txt)$"> Header set Cache-Control "max-age=604800" </FilesMatch> #кэшировать флэш и изображения на месяц <FilesMatch "\.(flv|swf|ico|gif|jpg|jpeg|png)$"> Header set Cache-Control "max-age=2592000" </FilesMatch> #отключить кэширование <FilesMatch "\.(pl|php|cgi|spl|scgi|fcgi)$"> Header unset Cache-Control </FilesMatch> </IfModule>Pragma: no-cache - из старой версии протокола HTTP/1.0. Практически все браузеры и прокси игнорируют.
ETag - уникальный хеш («отпечаток») байтов файла. При запросе файла с сервера, браузер сначала получает ETag хеш файла на сервере, если локальный и серверный хеши совпадают, то браузер берет файл из локального кеша, а сервер не отправляет файл.
FileETag MTime Size
Syntax: FileETag component ... INode The file's i-node number will be included in the calculation MTime The date and time the file was last modified will be included Size The number of bytes in the file will be included All All available fields will be used. This is equivalent to: FileETag INode MTime Size None If a document is file-based, no ETag field will be included in the response
Директива | Описание |
---|---|
no-cache
|
Сервер не должен использовать кэшированный ответ. |
no-store
|
Ответ на этот запрос не должен кэшироваться. |
max-age=delta-seconds
|
Клиент допускает кэшированный ответ, если его возраст не
превышает
delta-seconds секунд; клиент не требует его
валидации. |
max-stale=delta-seconds
|
Клиент допускает кэшированный ответ, если его возраст не
превышает
delta-seconds секунд. |
min-fresh=delta-seconds
|
Клиент допускает кэшированный ответ, если он будет оставаться
действительным не менее
delta-seconds секунд от момента запроса. |
no-transform
|
К запрашиваемому документу не должны применяться преобразования. |
only-if-cached
|
Допускается только кэшированный ответ. Если подходящего ответа нет в кэше, то не нужна ни валидация старого ответа, ни получение нового. |
Директива | Описание |
---|---|
public
|
Ответ разрешается сохранять в любом кэше. |
private
|
Ответ разрешается сохранять только в закрытом кэше (т.е. только для этого пользователя). |
no-cache
|
Кэшированный ответ не должен использоваться без предварительной его валидации. |
no-store
|
Ответ не разрешается сохранять в кэше. |
no-transform
|
К передаваемому документу не должны применяться преобразования. |
must-revalidate
|
Если кэшированный ответ устарел, то к нему
должна применяться процедура валидации. Эта директива
отменяет действие
max-stale . |
max-age=delta-seconds
|
Клиент допускает кэшированный ответ, если его возраст не
превышает
delta-seconds секунд; клиент не требует его
валидации. |
s-maxage=delta-seconds
|
То же, что
max-age , но действует только на открытые кэши. |
proxy-revalidate
|
То же, что
must-revalidate , но действует только на
прокси-сервера. |
http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html
http://www.w3.org/Protocols/rfc2616/rfc2616-sec13.html#sec13.5.1
http://www.mnot.net/cache_docs/#PRAGMA
http://ru.wikipedia.org/wiki/%D0%A1%D0%BF%D0%B8%D1%81%D0%BE%D0%BA_%D0%B7%D0%B0%D0%B3%D0%BE%D0%BB%D0%BE%D0%B2%D0%BA%D0%BE%D0%B2_HTTP
http://ru.wikipedia.org/wiki/%D0%9C%D0%B5%D1%82%D0%B0-%D1%82%D0%B5%D0%B3%D0%B8#.D0.9Ce.D1.82a-.D1.82e.D0.B3_Pragma
Комментариев нет:
Отправить комментарий