Как указать заголовок "Vary: Accept-Encoding" в.htaccess
Google PageSpeed говорит, что я должен "Указать переменную: заголовок Accept-Encoding" для JS и CSS. Как мне сделать это в.htaccess?
7 ответов
Я предполагаю, что это означает, что вы включаете сжатие gzip для своих файлов css и js, потому что это позволит клиенту получать как кодированный gzip контент, так и простой контент.
Вот как это сделать в apache2:
<IfModule mod_deflate.c>
#The following line is enough for .js and .css
AddOutputFilter DEFLATE js css
#The following line also enables compression by file content type, for the following list of Content-Type:s
AddOutputFilterByType DEFLATE text/html text/plain text/xml application/xml
#The following lines are to avoid bugs with some browsers
BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4\.0[678] no-gzip
BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
</IfModule>
А вот как добавить Vary Accept-Encoding
заголовок: [источник]
<IfModule mod_headers.c>
<FilesMatch "\.(js|css|xml|gz)$">
Header append Vary: Accept-Encoding
</FilesMatch>
</IfModule>
Vary:
В заголовке указывается, что содержание, обслуживаемое для этого URL, будет варьироваться в зависимости от значения определенного заголовка запроса. Здесь говорится, что он будет обслуживать другой контент для клиентов, которые говорят, что они Accept-Encoding: gzip, deflate
(заголовок запроса), чем контент, обслуживаемый клиентами, которые не отправляют этот заголовок. Основное преимущество этого, AFAIK, заключается в том, что промежуточные прокси-серверы прокси должны знать, что им нужно иметь две разные версии одного и того же URL-адреса из-за таких изменений.
Боюсь, Алалон не предоставил достаточно шагов для завершения процесса. Немного проб и ошибок, я смог успешно включить Gzipping на моем выделенном WHM-сервере.
Ниже приведены шаги:
Запустите EasyApache в WHM, выберите Deflate в списке исчерпывающих опций и перестройте сервер.
После этого перейдите в раздел "Конфигурация служб" >> "Конфигурация Apache" >> "Включить редактор"> "Включить пост VirtualHost", выберите "Все версии", а затем вставьте код mod_headers.c и mod_headers.c (приведенный выше в сообщении Ауларона) поверх другого в поле ввода.
После сохранения я увидел в среднем 75,36% экономии данных! Вы можете запустить тест до и после, используя этот инструмент сжатия HTTP, чтобы увидеть свои собственные результаты: http://www.whatsmyip.org/http_compression/
Надеюсь, что это работает для вас всех!
- Matt
Чтобы сжать ваши файлы шрифтов, а также!
add "x-font/otf x-font/ttf x-font/eot"
как в:
AddOutputFilterByType DEFLATE text/html text/plain text/xml application/xml x-font/otf x-font/ttf x-font/eot
Много часов ушло, чтобы уточнить, что это было. Пожалуйста, прочитайте этот пост, чтобы получить расширенный .HTACCESS
коды и узнать, что они делают.
Ты можешь использовать:
Header append Vary "Accept-Encoding"
#or
Header set Vary "Accept-Encoding"
Если кому-то это нужно для NGINX
Конфигурационный файл здесь это фрагмент:
location ~* \.(js|css|xml|gz)$ {
add_header Vary "Accept-Encoding";
(... other headers or rules ...)
}
Это сводило меня с ума, но кажется, что правка Ауларона пропустила двоеточие после "Vary"
, Так меняется "Vary Accept-Encoding"
в "Vary: Accept-Encoding"
исправил проблему для меня.
Я бы прокомментировал ниже пост, но не похоже, что это позволит мне.
В любом случае, я надеюсь, что это спасет кого-то от той же проблемы, что и у меня.
Нет необходимости указывать или даже проверять, сжат ли файл / есть, вы можете отправить его в каждый файл, на каждый запрос.
Он сообщает нисходящим прокси-серверам, как сопоставлять будущие заголовки запроса, чтобы решить, можно ли использовать кэшированный ответ, а не запрашивать новый с исходного сервера.
<ifModule mod_headers.c>
Header unset Vary
Header set Vary "Accept-Encoding, X-HTTP-Method-Override, X-Forwarded-For, Remote-Address, X-Real-IP, X-Forwarded-Proto, X-Forwarded-Host, X-Forwarded-Port, X-Forwarded-Server"
</ifModule>
unset
это исправление некоторых ошибок в старом хостинге GoDaddy, по желанию.