Не уверен, почему это было закрыто, просто потому, что это не связано с языком программирования, не означает, что это не связано с кодированием.
BlueRaja - Дэнни Пфлугофт,
@ BlueRaja-DannyPflughoeft Я согласен, это было просмотрено более 65100 раз, поэтому я думаю, что это хорошо изученная тема, не говоря уже о том, что я каждый день отвечаю на вопросы о htaccess.
@IsmaelMiguel он фактически сообщит клиенту (и, что более важно, любым кэширующим серверам в пути), что файл отличается для каждого варианта s значения заголовка запроса клиента Accept-Encoding`, а не для каждого Content-Encodingварианта значения заголовка ответа сервера.
aularon
@ BlueRaja-DannyPflughoeft Потому что пользователи с большой репутацией и пользователи, стремящиеся к репутации, создают репутацию, выслеживая вопросы, чтобы закрыть их. Обидно, что это так часто приводит к тому, что закрываются вопросы, которых не должно быть.
Дэн Ниссенбаум
Ответы:
89
Я предполагаю, что это означало, что вы включили сжатие 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заголовок: [src]
Vary:Заголовок сообщает , что содержание прослужило этот адрес будет меняться в зависимости от значения определенного заголовка запроса. Здесь говорится, что он будет обслуживать другой контент для клиентов, которые говорят, что они Accept-Encoding: gzip, deflate(заголовок запроса), чем контент, обслуживаемый клиентами, которые не отправляют этот заголовок. Основное преимущество этого, AFAIK, заключается в том, чтобы позволить промежуточным прокси-серверам кэширования знать, что им нужно иметь две разные версии одного и того же URL-адреса из-за такого изменения.
Боюсь, что Aularon не предоставил достаточно шагов для завершения процесса. Путем проб и ошибок я смог успешно включить Gzipping на моем выделенном сервере WHM.
Ниже приведены шаги:
Запустите EasyApache в WHM, выберите Deflate в списке Exhaustive Options и перестройте сервер.
После этого перейдите к Конфигурация служб >> Конфигурация Apache >> Включить редактор >> Опубликовать VirtualHost Include, выберите Все версии, а затем вставьте код mod_headers.c и mod_headers.c (указанный выше в сообщении Aularon) поверх другого в пределах поле ввода.
После сохранения я наблюдал в среднем экономию данных 75,36%! Вы можете запустить тест до и после, используя этот инструмент HTTP-сжатия, чтобы увидеть свои собственные результаты: http://www.whatsmyip.org/http_compression/
Много часов ушло на то, чтобы выяснить, что это было. Пожалуйста, прочтите этот пост, чтобы получить расширенные .HTACCESSкоды и узнать, что они делают.
Вы можете использовать:
Header append Vary "Accept-Encoding"
#or
Header set Vary "Accept-Encoding"
Это сводило меня с ума, но похоже, что после редактирования aularon не хватало двоеточия "Vary". Итак, изменение, "Vary Accept-Encoding"чтобы "Vary: Accept-Encoding"решить проблему для меня.
Я бы прокомментировал под постом, но, похоже, это не позволит мне.
В любом случае, я надеюсь, что это избавит кого-то от тех же проблем, что и я.
Нет необходимости указывать или даже проверять, сжат ли файл / сжался, вы можете отправить его в каждый файл по каждому запросу.
Он сообщает нижестоящим прокси, как сопоставлять заголовки будущих запросов, чтобы решить, можно ли использовать кешированный ответ, вместо того, чтобы запрашивать новый с исходного сервера.
Vary: Accept-Encoding
скажет браузеру сохранить в кеше версию страницы на основеContent-Encoding
заголовка. Вы должны увидеть stackoverflow.com/questions/1975416/… и developers.google.com/speed/docs/best-practices/…s
значения заголовка запроса клиента Accept-Encoding`, а не для каждогоContent-Encoding
варианта значения заголовка ответа сервера.Ответы:
Я предполагаю, что это означало, что вы включили сжатие gzip для файлов css и js, потому что это позволит клиенту получать как контент в кодировке gzip, так и простой контент.
Вот как это сделать в apache2:
А вот как добавить
Vary Accept-Encoding
заголовок: [src]Vary:
Заголовок сообщает , что содержание прослужило этот адрес будет меняться в зависимости от значения определенного заголовка запроса. Здесь говорится, что он будет обслуживать другой контент для клиентов, которые говорят, что ониAccept-Encoding: gzip, deflate
(заголовок запроса), чем контент, обслуживаемый клиентами, которые не отправляют этот заголовок. Основное преимущество этого, AFAIK, заключается в том, чтобы позволить промежуточным прокси-серверам кэширования знать, что им нужно иметь две разные версии одного и того же URL-адреса из-за такого изменения.источник
Боюсь, что Aularon не предоставил достаточно шагов для завершения процесса. Путем проб и ошибок я смог успешно включить Gzipping на моем выделенном сервере WHM.
Ниже приведены шаги:
Запустите EasyApache в WHM, выберите Deflate в списке Exhaustive Options и перестройте сервер.
После этого перейдите к Конфигурация служб >> Конфигурация Apache >> Включить редактор >> Опубликовать VirtualHost Include, выберите Все версии, а затем вставьте код mod_headers.c и mod_headers.c (указанный выше в сообщении Aularon) поверх другого в пределах поле ввода.
После сохранения я наблюдал в среднем экономию данных 75,36%! Вы можете запустить тест до и после, используя этот инструмент HTTP-сжатия, чтобы увидеть свои собственные результаты: http://www.whatsmyip.org/http_compression/
Надеюсь, это сработает для всех вас!
источник
Чтобы также заархивировать файлы шрифтов!
как в:
источник
Много часов ушло на то, чтобы выяснить, что это было. Пожалуйста, прочтите этот пост, чтобы получить расширенные
.HTACCESS
коды и узнать, что они делают.Вы можете использовать:
источник
Это сводило меня с ума, но похоже, что после редактирования aularon не хватало двоеточия
"Vary"
. Итак, изменение,"Vary Accept-Encoding"
чтобы"Vary: Accept-Encoding"
решить проблему для меня.Я бы прокомментировал под постом, но, похоже, это не позволит мне.
В любом случае, я надеюсь, что это избавит кого-то от тех же проблем, что и я.
источник
Если кому-то это нужно для
NGINX
файла конфигурации, вот фрагмент:источник
Нет необходимости указывать или даже проверять, сжат ли файл / сжался, вы можете отправить его в каждый файл по каждому запросу.
unset
желании можно исправить некоторые ошибки в старом хостинге GoDaddy.источник