gzipped js / css не понят в браузере.проблема с кодировкой передачи? - PullRequest
1 голос
/ 08 февраля 2012
  • У меня есть таблица стилей, живущая в /static/styles/min.css
  • Когда заголовки разрешены, я переписываю их в /static/styles/min.css.gz (предварительно сжатый файл)
  • Когда я запрашиваю файл min.css с помощью curl + GET, я возвращаю сжатое содержимое.
  • Когда я запрашиваю фактическую страницу в браузере, ни один из CSS не применяется.
  • Если я отключаю переписывание, CSS применяется нормально, поэтому это проблема с gzipped содержимым.
  • Заголовки ответа включают в себя: «Content-Transfer-Encoding: двоичный», «Content-Type: application / x-gzip», «Content-Length: 61021»

Это то, что находится в моем файле VirtualHost:

RewriteCond %{HTTP:Accept-Encoding} gzip
RewriteRule ^(.*)\.css$ $1\.css\.gz [L,T=text/css]
<FilesMatch .*\.css\.gz>
    ForceType text/css
    Header unset Content-Transfer-Encoding
    Header append Content-Encoding gzip
    Header append Content-Type text/css
</FilesMatch>

1 Ответ

2 голосов
/ 09 февраля 2012

Запрос файла foo.css.gz, используя следующие правила

<FilesMatch "\.css\.gz$">
    Header set Content-Encoding gzip
    Header set Content-Type "text/css; charset=utf-8"
</FilesMatch>

Результаты в следующих заголовках:

Accept-Ranges:bytes
Cache-Control:max-age=2592000
Connection:Keep-Alive
Content-Encoding:gzip
Content-Length:71
Content-Type:text/css; charset=utf-8
Date:Wed, 08 Feb 2012 21:01:34 GMT 
Expires:Fri, 09 Mar 2012 21:01:34 GMT 
Keep-Alive:timeout=5, max=100
Last-Modified:Sun, 05 Feb 2012 21:53:14 GMT 
Server:Apache/2.2.21 (Unix) mod_ssl/2.2.21 OpenSSL/1.0.0e DAV/2 PHP/5.3.10 with Suhosin-Patch

Это те же заголовки (немного отличающиеся по длине содержимого), что и при запросе foo.css и позволяющие mod_deflate делать свое дело (используя стандартный файл .htaccess из html5boilerplate ).

Вы можете найти этот репозиторий полезным: https://github.com/AD7six/h5bp-server-check:)

...