У нас есть Apache 2.2 с mod_cache и mod_deflate среди других модулей. Проблема в том, что если мы добавим заголовок Vary, как в документации Apache ...
# Make sure proxies don't deliver the wrong content
Header append Vary User-Agent env=!dont-vary
... в итоге мы получаем копию обслуживаемого ресурса для каждого варианта пользовательского агента в нашем кеше. Это тратит впустую дисковое пространство и снижает процент попаданий.
Итак, каково предпочтительное решение этой проблемы? Откажитесь от заголовка Vary и сжимайте только «безопасные» ресурсы, такие как обычный HTML?
Причина, по которой заголовок должен изменяться в зависимости от пользовательского агента, заключается в том, что рекомендуемая Apache конфигурация для mod_deflate обслуживает несжатые версии некоторого контента для пользователей Netscape 4. Вероятно, сейчас достаточно мало пользователей Netscape 4, чтобы вы могли просто обслуживать сжатый контент во всех браузерах, которые утверждают, что поддерживают его, и не зависеть от пользовательского агента.
Итак, вместо рекомендуемой конфигурации:
<Location />
# Insert filter
SetOutputFilter DEFLATE
# Netscape 4.x has some problems...
BrowserMatch ^Mozilla/4 gzip-only-text/html
# Netscape 4.06-4.08 have some more problems
BrowserMatch ^Mozilla/4\.0[678] no-gzip
# MSIE masquerades as Netscape, but it is fine
BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
# Don't compress images
SetEnvIfNoCase Request_URI \
\.(?:gif|jpe?g|png)$ no-gzip dont-vary
# Make sure proxies don't deliver the wrong content
Header append Vary User-Agent env=!dont-vary
</Location>
Вы можете просто:
<Location />
# Insert filter
SetOutputFilter DEFLATE
# Don't compress images
SetEnvIfNoCase Request_URI \
\.(?:gif|jpe?g|png)$ no-gzip dont-vary
</Location>