Задать вопрос
@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?

Спасибо
  • Вопрос задан
  • 3361 просмотр
Подписаться 1 Оценить Комментировать
Решения вопроса 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).
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы