Как указать заголовок "Vary:Accept-Encoding".htaccess


Google PageSpeed говорит, что я должен "указать заголовок Vary: Accept-Encoding" для JS и CSS. Как мне это сделать .htaccess?

7 80

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, необязательно.