Поиск здесь на SO вернул бы некоторую полезную информацию - например, Использование кэширования в браузере - но в любом случае ...
От: http://www.samaxes.com/2011/05/improving-web-performance-with-apache-and-htaccess/
При первом посещении вашей страницы будет несколько HTTP-запросов на загрузку всех файлов ваших сайтов, но, используя заголовки Expires
и Cache-Control
, вы делаете эти файлы кэшируемыми. Это позволяет избежать ненужных HTTP-запросов при последующих просмотрах страницы.
Apache включает эти заголовки благодаря mod_expires
и mod_headers
модулям.
Модуль mod_expires
управляет настройкой заголовка HTTP Expires
и директивы max-age
заголовка HTTP Cache-Control
в ответах сервера.
Чтобы изменить директивы Cache-Control
, отличные от max-age
, вы можете использовать модуль mod_headers
.
Модуль mod_headers
предоставляет директивы для управления и изменения заголовков HTTP-запросов и ответов. Заголовки могут быть объединены, заменены или удалены.
Правило для установки Expires
заголовков:
# BEGIN Expire headers
<ifModule mod_expires.c>
ExpiresActive On
ExpiresDefault "access plus 5 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"
ExpiresByType application/x-shockwave-flash "access plus 2592000 seconds"
ExpiresByType text/css "access plus 604800 seconds"
ExpiresByType text/javascript "access plus 216000 seconds"
ExpiresByType application/javascript "access plus 216000 seconds"
ExpiresByType application/x-javascript "access plus 216000 seconds"
ExpiresByType text/html "access plus 600 seconds"
ExpiresByType application/xhtml+xml "access plus 600 seconds"
</ifModule>
# END Expire headers
Правило для установки Cache-Control
заголовков:
# BEGIN Cache-Control Headers
<ifModule mod_headers.c>
<filesMatch "\.(ico|jpe?g|png|gif|swf)$">
Header set Cache-Control "public"
</filesMatch>
<filesMatch "\.(css)$">
Header set Cache-Control "public"
</filesMatch>
<filesMatch "\.(js)$">
Header set Cache-Control "private"
</filesMatch>
<filesMatch "\.(x?html?|php)$">
Header set Cache-Control "private, must-revalidate"
</filesMatch>
</ifModule>
# END Cache-Control Headers
Примечание: нет необходимости устанавливать директиву max-age
с заголовком Cache-Control
, поскольку она уже установлена модулем mod_expires
.
must-revalidate
означает, что как только ответ становится устаревшим, его необходимо повторно проверить; это не значит, что его нужно проверять каждый раз.
Подробнее здесь: http://www.mnot.net/cache_docs/
И из Google: http://code.google.com/speed/page-speed/docs/caching.html
И Yahoo: http://developer.yahoo.com/performance/rules.html#expires