Как указать заголовок "Vary:Accept-Encoding".htaccess
Google PageSpeed говорит, что я должен "указать заголовок Vary: 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>
и вот как добавить : [src]
<IfModule mod_headers.c> <FilesMatch "\.(js|css|xml|gz)$"> Header append Vary: Accept-Encoding </FilesMatch> </IfModule>
The
Vary:
заголовок говорит о том, что содержимое, подаваемое для этого url-адреса, будет меняться в зависимости от значения определенного запроса заголовок. Здесь говорится, что он будет обслуживать различный контент для клиентов, которые говорят, что ониAccept-Encoding: gzip, deflate
(заголовок запроса), чем содержимое, подаваемое клиентам, которые не отправляют этот заголовок. Основное преимущество этого, AFAIK, заключается в том, чтобы промежуточные кэширующие прокси знали, что они должны иметь две разные версии одного и того же url-адреса из-за такого изменения.
Я боюсь, что Aularon не предоставил достаточно шагов для завершения процесса. С небольшим проб и ошибок, я смог успешно включить Gzipping на моем выделенном сервере WHM.
Ниже приведены шаги:
запустите EasyApache в WHM, выберите Deflate в исчерпывающем списке опций и перестроите сервер.
после этого перейти к настройке сервисов >> конфигурации Apache >> включить редактор >> пост рубрики Включите, выберите Все версии, а затем вставьте mod_headers.C, а также mod_headers.код c (перечисленный выше в сообщении Aularon) поверх другого в поле ввода.
после сохранения, я видел 75.36% экономии данных в среднем! Вы можете запустить тест до и после с помощью этого инструмента сжатия HTTP, чтобы увидеть свои собственные результаты:http://www.whatsmyip.org/http_compression/
надеюсь, что это работает для вас все!
- матовая
чтобы gzip ваши файлы шрифтов, а также!
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"
это сводило меня с ума, но кажется, что редактирование aularon отсутствовало двоеточие после
"Vary"
. Таким образом, изменение"Vary Accept-Encoding"
to"Vary: Accept-Encoding"
Исправлена проблема для меня.Я бы прокомментировал ниже Сообщение, но не похоже, что это позволит мне.
во всяком случае, я надеюсь, что это избавит кого-то от тех же проблем, которые у меня были.
Если кому-то нужно это
NGINX
конфигурационный файл вот этот фрагмент:location ~* \.(js|css|xml|gz)$ { add_header Vary "Accept-Encoding"; (... other headers or rules ...) }
нет необходимости указывать или даже проверять, если файл/сжат, вы можете отправить его в каждый файл, по каждому запросу.
он сообщает нижестоящим прокси, как соответствовать будущим заголовкам запроса, чтобы решить можно ли использовать кэшированный ответ, а не запрашивать новый один из исходного сервера.
<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>
- the
unset
это исправить некоторые ошибки в старом хостинге GoDaddy, необязательно.