Gzip CSS полностью ломает страницу

Спасибо, что зашли. Я действительно пробовал это самостоятельно,но снова мне кажется, что это слишком много для меня.

СИТУАЦИЯ...


Я живу со своим собственным сайтом на общем хостере. Когда я подошел к тому, чтобы сжать мои тонны CMS-генерируемых js и css, чтобы сделать PageSpeedInsights и себя счастливыми, я прочитал в нем и, наконец, узнал, что у моего хостера нет ни mod_gzip, ни mod_deflate установлено. Что установлено, это ZLIB. Поэтому я стал искать. Нашел типичное решение php append и ему не понравилось. Нашел несколько аккуратных строк кода для htaccess, которые сделали меня счастливым, потому что они работали сразу:
AddHandler application/x-httpd-php .html .htm .php .js
php_flag output_buffering On
php_value output_handler ob_gzhandler
php_flag zlib.output_compression Off

Я подтвердил, что он работает с помощью GIDZipTest. Все хорошо, и мне это нравится.

но как только я положил .css в список AddHandler, моя страница полностью ломается.
Я попытался использовать php решение с ob_gzhandler только для css-файлов, но он в конечном итоге не работает вообще. Просто ничего не делает.


решение? (НЕ СОВСЕМ)


Я вручную уменьшил все css и загрузил css.GZ-версия каждого файла, обслуживающая его
RewriteCond %{HTTP:Accept-encoding} gzip
RewriteCond %{REQUEST_FILENAME}.gz -s
RewriteRule ^(.*).css .css.gz [QSA]
RewriteRule .css.gz$ - [T=text/css,E=no-gzip:1]

Это также отлично работает.


вопросы!


  1. что мне нужно, чтобы определить/specifiy для сжатия css для работы? Я чувствую Я просто пропускаю некоторые конверсии...

  2. когда я обслуживаю мой вручную minified .стиль CSS.файлы gz для клиента, они все равно будут сжаты дополнительно?

  3. будет ли это иметь какие-либо дополнительные преимущества в размере файла или я должен просто придерживаться вручную обслуживаемых версий и дать ** о Google PageSpeed?
    (GIDZipTest по-прежнему показывает сценарии "что, если" даже для мини-файлов, которые являются впечатляющими числами, если честно. Я хотел бы что...)

заранее спасибо за любой комментарий.
Искренне ваш

Марьяна

4 ответов


решение PHP+zlib автоматически сжимает каждый файл PHP, обслуживаемый с веб-сервера. Это означает, что каждый файл, помещенный в обработчик php, будет отправлен сжатым в браузер клиента. Во всяком случае, директива AddHandler говорит веб-серверу обрабатывать css-файлы как PHP-скрипты, поэтому я полагаю, что они "сломаны". Css-файлы должны иметь свой собственный обработчик (text / css).

другое (не проверенное) решение может содержать определенный вами обработчик первоначально:

AddHandler application/x-httpd-php .html .htm .php .js .css

и добавление в верхней части ваших css-файлов этого php-кода:

<?php header('Content-Type: text/css'); ?>

но я не уверен, что это сработает. Это должно сообщить браузерам, что они фактически получают css-файлы.

лучшим решением в этих случаях будет mod_deflate, который вы упомянули.


вы доставляете содержимое в сжатом виде, но не только для передачи, Что было бы сделано с Контент-Кодирования. Таким образом, клиент не распаковывает его перед интерпретацией содержимого.

вы можете включить MultiViews разрешить автоматический согласование содержания с mod_negotiation:

<FilesMatch "\.css$">
    Options MultiViews
</FilesMatch>

поэтому, если вы столкнетесь с подобными проблемами, я советую прочитать в этой статье и получить свой полный путь к веб-каталогу правильно!

создать PHP скрипт (например: "gzip-css.php") с

<?php
ob_start("ob_gzhandler");
header("content-type: text/css; charset: UTF-8");
?>

и сохраняем его .реврайт

<FilesMatch "\.css$">
ForceType application/x-httpd-php
php_value auto_prepend_file "/full/path/to/that/file/see/link/above/gzip-css.php"
</FilesMatch>

для всех .файл CSS. До сих пор это казалось мне единственным решением. Я бы сделал это правильно, не спрашивая здесь, если бы нашел свой полный путь раньше. Может, кто еще лучше идея о том, как объединить версию AddHandler с css tho.

вещи, которые не работали (полностью отключает все css):
- Добавление. css для AddHandler и любой вышеуказанных (включая шахту) решений.
- Обслуживайте вручную gzipped css-файлы и добавьте скрипт типа контента
- Сочетание двух


старый вопрос, но я нашел .решение htaccess, которое работало для меня без изменения кода.

AddHandler application/x-httpd-php .html .htm .php .js .css
<Files *.css>
    Header set Content-type "text/css"
</Files>
php_flag zlib.output_compression On
php_value zlib.output_compression_level 5