Версии IE6, на которые влияют проблемы с gzip в JS / CSS, более не распространены (и даже в то время были в меньшинстве). А Netscape 4 давно ушел.
По этой причине я настоятельно рекомендую удалить все существующие gzip-хаки, взломанные User-Agent . Отправьте сжатый HTML / JS / CSS всем браузерам, которые его запрашивают (с Accept-Encoding
), в соответствии со стандартом HTTP / 1.1.
if "msie" in request.META.get('HTTP_USER_AGENT', '').lower():
О, дорогой. Это действительно плохой тест, даже по мрачным стандартам UA-сниффинга. Не нужно проверять, что он действительно MSIE
в нужном месте в строке (в отличие от любого места во всех конечных битах; легко получить ложные срабатывания), и он не проверяет SV1
, что было традиционно для теста gzip (поскольку ошибка IE6SP2 + не может быть затронута ошибкой), поэтому она нарушает сжатие для всех IE, что просто не нужно.
Он также не устанавливает Vary: User-Agent
, поэтому прокси-серверы будут кэшировать неправильную версию. И он устанавливает Vary: Accept-Encoding
для IE, когда не используется Content-Encoding
, поэтому он нарушит кеширование в IE .
Должны ли мы сделать копию модуля промежуточного программного обеспечения gzip и отредактировать несколько строк, касающихся IE и Javascript (такое чувство, что мы нарушаем DRY)?
Вы можете и, возможно, отправить патч Django. Потому что их нынешний подход - ИМО просто сломан.
Также возможно использование Apache для gzip.
Да, если у вас есть Apache upstream, определенно используйте это (например, с mod_deflate
). Это наиболее эффективно, если вы можете использовать его для обслуживания статических файлов, таких как скрипты. (Старайтесь поддерживать JS в статических скриптах, а не генерировать / создавать шаблоны на лету.)
Опять же, не используют правила прослушивания браузера, упомянутые на странице mod_deflate
. Они хрупкие и уродливые и пытаются решить проблему Netscape, которая никого не затрагивала в последнее десятилетие.