@ShVad

Правильно ли формирую htaccess файл для сжатия и кэширования?

1. Вариант используется mod_deflate и mod_headers
Сжимаем js css и html страницы (страницы которые генерит php):
<IfModule mod_deflate.c>
	AddOutputFilterByType DEFLATE text/css
	AddOutputFilterByType DEFLATE text/javascript
	AddOutputFilterByType DEFLATE application/javascript
	AddOutputFilterByType DEFLATE application/x-javascript
	AddOutputFilterByType DEFLATE application/x-font-woff # Нужно ли сюда добавлять файлы шрифтов (какие)?
	AddOutputFilterByType DEFLATE text/html
</IfModule>

Используем кэш браузера:
<IfModule mod_headers.c>
	<FilesMatch "\.(js|css)$">
		Header set Cache-Control "max-age=43200"
	</FilesMatch>
	<FilesMatch "\.(ico|gif|jpg|jpeg|png)$">
		Header set Cache-Control "max-age=2592000"
	</FilesMatch>
</IfModule>

Нужно ли для шрифтов тоже использовать кэш браузера?

2. Вариант mod_gzip и mod_expires
С mod_gzip не совсем разобрался, можно ли в mod_gzip_item_include file указать только js и css или вообще его не использовать?, а в mod_gzip_item_include mime указать типы? Чтобы было аналогично mod_deflate.
Чтобы сжимать js css и html (страницы которые генерит php).
<IfModule mod_gzip.c>
	mod_gzip_on         Yes
	mod_gzip_dechunk    Yes
	mod_gzip_item_include file		\.(html?|txt|css|js|php|pl)$
	mod_gzip_item_include mime		^text\.*
	mod_gzip_item_include mime		^application/x-javascript.*
	mod_gzip_item_include mime		^application/x-font-woff.*
	mod_gzip_item_exclude mime	^image\.*
	mod_gzip_item_exclude rspheader	^Content-Encoding:.*gzip.*
</IfModule>


Используем кэш браузера:
<IfModule mod_expires.c>
	ExpiresActive On
	ExpiresByType text/css "access plus 43200 seconds"
	ExpiresByType text/javascript "access plus 43200 seconds"
	ExpiresByType application/javascript "access plus 43200 seconds"
	ExpiresByType application/x-javascript "access plus 43200 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"
</IfModule>

Обязательно ли использовать параметр ExpiresDefault?
Для шрифтов досточно будет: application/x-font-ttf, font/opentype, application/x-font-woff?

Все ли описано для корректной работы?

Нужно ли удалять ETag и Last-Modified?

Спасибо
  • Вопрос задан
  • 3349 просмотров
Решения вопроса 1
orlov0562
@orlov0562
I'm cool!
1)
- Добавляется не файл шрифта, а mime тип соответствующего файла, пример
AddOutputFilterByType DEFLATE application/x-font
  AddOutputFilterByType DEFLATE application/x-font-truetype
  AddOutputFilterByType DEFLATE application/x-font-ttf
  AddOutputFilterByType DEFLATE application/x-font-otf
  AddOutputFilterByType DEFLATE application/x-font-opentype
  AddOutputFilterByType DEFLATE application/vnd.ms-fontobject
  AddOutputFilterByType DEFLATE font/ttf
  AddOutputFilterByType DEFLATE font/otf
  AddOutputFilterByType DEFLATE font/opentype


- Использовать кеш для шрифтов стоит, если шрифт не стандартный и подключается отдельным файлом

2)
- mod_gzip_item_include имеет формат
mod_gzip_item_include <тип> <регулярное выражение>
тип может быть: mime, handler, file, uri, reqheader, rspheader
если регулярное выражение отработало, то будет кеширование.

Использовать файлы или mime типы или все вместе - это зависит от задачи. Как пример, ты можешь генерить js или css в файле site_com/style.php и в таком случае, mime сработает (при условии что будет в скрипте послан css header), а вот file нет. В общем, идея думаю понятна..

Обязательно ли использовать параметр ExpiresDefault?

Нет не обязательно. ExpiresDefault = общая настройка; ExpiresByType = более тонкая настройка, при этом переопределяет значения ExpiresDefault.

Для шрифтов досточно будет: application/x-font-ttf, font/opentype, application/x-font-woff

Зависит от набора шрифтов которые используешь, см. ответ на п.1

Нужно ли удалять ETag и Last-Modified?

Если, у тебя нет балансировки (нескольких веб-серверов для одного сайта), то не надо удалять. С помощью этих заголовков веб-сервер понимает какая версия страницы находится в кеше браузера и соответственно либо генерирует новую страницу (http 200), либо говорит использовать кеш (http 304).
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы