Поддержка Проблемы и решения Не включается GZIP для контента

  • Сайт на апаче, gnix в прокси режиме. Хочу включить сжатие. mod_deflate — на сервере включен.

    В .htaccess добавил :

    <IfModule mod_deflate.c>
    # Compress HTML, CSS, JavaScript, Text, XML and fonts
    AddOutputFilterByType DEFLATE application/javascript
    AddOutputFilterByType DEFLATE application/rss+xml
    AddOutputFilterByType DEFLATE application/vnd.ms-fontobject
    AddOutputFilterByType DEFLATE application/x-font
    AddOutputFilterByType DEFLATE application/x-font-opentype
    AddOutputFilterByType DEFLATE application/x-font-otf
    AddOutputFilterByType DEFLATE application/x-font-truetype
    AddOutputFilterByType DEFLATE application/x-font-ttf
    AddOutputFilterByType DEFLATE application/x-javascript
    AddOutputFilterByType DEFLATE application/xhtml+xml
    AddOutputFilterByType DEFLATE application/xml
    AddOutputFilterByType DEFLATE font/opentype
    AddOutputFilterByType DEFLATE font/otf
    AddOutputFilterByType DEFLATE font/ttf
    AddOutputFilterByType DEFLATE image/svg+xml
    AddOutputFilterByType DEFLATE image/x-icon
    AddOutputFilterByType DEFLATE text/css
    AddOutputFilterByType DEFLATE text/html
    AddOutputFilterByType DEFLATE text/javascript
    AddOutputFilterByType DEFLATE text/plain
    AddOutputFilterByType DEFLATE text/xml
    
    # Remove browser bugs (only needed for really old browsers)
    BrowserMatch ^Mozilla/4 gzip-only-text/html
    BrowserMatch ^Mozilla/4\.0[678] no-gzip
    BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
    Header append Vary User-Agent
    </IfModule>

    пробовал так же :

    <IfModule deflate_module>
        # Enable compression for the following file types.
        AddOutputFilterByType            \
         DEFLATE                         \
          application/javascript         \
          text/css                       \
          text/html                      \
          text/javascript                \
          text/plain                     \
          text/xml
    </IfModule>

    в результате html сжимается, а прочий контент, например css НЕТ. Подскажите , куда копать, пожалуйста

Просмотр 15 ответов — с 1 по 15 (всего 16)
  • Модератор Yui

    (@fierevere)

    永子

    nginx не поддерживает сжатие deflate, лучше использовать mod_gzip для апача и для nginx директиву

    gzip on;
    gzip_vary on;
    gzip_proxied any;

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

    скажите в теории, я могу сам включить сжатие, не имея ранее подобного опыта? Чтобы все не убить))

    в панели управления хостингом есть вот это :

    https://dl.dropboxusercontent.com/u/19954007/1rer.jpg
    https://dl.dropboxusercontent.com/u/19954007/2rer.jpg
    https://dl.dropboxusercontent.com/u/19954007/3rer.jpg
    https://dl.dropboxusercontent.com/u/19954007/4rer.jpg

    править конфиги руками я никогда не пробовал ((

    спасибо за ответы

    Модератор Yui

    (@fierevere)

    永子

    2. дополнительные директивы nginx

    gzip on;
    gzip_vary on;
    gzip_proxied any;
    gzip_types text/plain text/html text/css application/x-javascript text/xml application/xml application/xml+rss text/javascript;
    gzip_min_length 524;
    gzip_buffers 64 16k;
    gzip_comp_level 6;
    gzip_http_version 1.1;

    это туда, убедитесь что перезапустили nginx, ну или можно просто перезагрузить сервер

    mod_gzip в настройках апача я не вижу, но так думаю что он включен и не подлежит отключению 😀

    .htaccess секцию сжатия deflate меняете на gzip

    # BEGIN GZIP COMPRESSION
    <IfModule mod_gzip.c>
    mod_gzip_on Yes
    mod_gzip_dechunk Yes
    mod_gzip_item_include file \.(html?|txt|css|js|php|pl)$
    mod_gzip_item_include handler ^cgi-script$
    mod_gzip_item_include mime ^text/.*
    mod_gzip_item_include mime ^application/x-javascript.*
    mod_gzip_item_exclude mime ^image/.*
    mod_gzip_item_exclude rspheader ^Content-Encoding:.*gzip.*
    </IfModule>
    # END GZIP COMPRESSION

    Модератор Yui

    (@fierevere)

    永子

    PS: можете на втором экране поставить галку

    «обрабатывать статические файлы с помощью nginx»

    тогда можно в .htaccess ничего по сжатию не писать
    однако если вы ставите кеширование на уровне браузера (expires)
    тогда нужно еще в директивы nginx дописать им замену
    я не очень уверена куда допишет ваша панелька эти директивы,
    но они должны оказаться внутри блока server {}

    location ~* ^.+\.(jpg|jpeg|png|ico|gif|swf)$ { expires 30d; }
    location ~* ^.+\.(css|js)$ { expires 14d; add_header Vary Accept-Encoding; gzip on; gzip_static on; }
    location ~* ^.+\.(woff|ttf)$ { expires 180d; add_header Vary Accept-Encoding; gzip on; }

    а если я не буду ставить палку на втором экране, можно вот это не писать:

    однако если вы ставите кеширование на уровне браузера (expires)
    тогда нужно еще в директивы nginx дописать им замену
    я не очень уверена куда допишет ваша панелька эти директивы,
    но они должны оказаться внутри блока server {}

    у меня стоит кэширование на уровне браузера. мне бы просто включить сжатие в самом простом режиме ))). все до PS мне вроде бы понятно. только сервер страшновато перегружать))) Я сегодня это уже сделал и он не запустился ))))))))))))). Оказалось что хоть я и не видел htaccess , пытался скопировать в директорию свой, и он затер существующий после чего сервер не запускался. это было ужасно ))))

    еще раз спасибо огромное. ваша квалификация меня просто шокирует ))

    Модератор Yui

    (@fierevere)

    永子

    а если я не буду ставить палку на втором экране, можно вот это не писать:

    можно и не писать, просто апач это звено которое по идее можно вообще выкинуть и все делать через nginx + php fpm
    работать это будет много быстрее и потребление ресурсов будет заметно снижено, это так.. имейте ввиду просто, что можно сделать лучше, особенно если нагрузка на сервер будет возрастать

    сжатие в самом простом режиме может делать nginx с описаными выше директивами, ориентируется он на mime тип, возможно даже не обязательно что-то жать апачем (.htaccess) но если апач сожмет — то nginx отпроксирует сжатым, беды никакой не будет.
    просто не используйте deflate, более распространен и используем gzip, они по сжатию одинаковы, но не совместимы.

    в принципе гугл еще пихает Brotli теперь , но у меня к нему скептическое пока отношение, да и нагрузка на сервер будет выше, поддержка браузерами обещается в FF 44 , в Хроме тоже будет..

    спасибо огромное!все заработало.

    в продолжение вчерашнего разговора. скажите, пожалуйста, могут ли новые настройки конфликтовать с установленными плагинами типа суперкэш . у нас внезапно посыпались ошибки типа :

    [error] [client 73.41.252.252] Premature end of script headers: index.php, referer: https://www.cup.com/checkout/

    причем сам сайт работает нормально, а на странице завершения оформления заказа происходит вот такая красота(((

    Модератор Yui

    (@fierevere)

    永子

    навряд ли, вообще суперкеш не должен кешировать /checkout

    Спасибо за ответ. Я тоже так думаю
    Я посмотрел настройки MYSQL — у них при 7,8 ГБ памяти на сервере innodb_buffer_pool_size — 8МБ . И все остальное в таком же духе. Так что не удивительно что при работе с БД возникают тормоза.

    Модератор Yui

    (@fierevere)

    永子

    innodb_buffer_pool_size - 8МБ

    это смешно, хотя нет.. даже не смешно уже

    нормальные значения — около 128 M

    MyISAM быстрее кстати для WordPress, минус конечно что если сервер некорректно будет выключен — таблицы поломаются, придется REPAIR делать

    Я все думал почему все так тормозит. Знаю, что есть утилиты для расчета оптимальных значений, либо берется 70-80% от всей памяти сервера (только я не понял речь о специально выделенном mySQL сервере или ситуации когда на одной машине крутится все. )
    В моем случае в БД есть таблицы обоих типов.

    Модератор Yui

    (@fierevere)

    永子

    оба типа — неэффективное по памяти решение
    в вашем случае лучше использовать обьектное кеширование на
    apcu (apc если версия php не новая) или xcache
    или вариант с memcached/redis

    нужно установить соответствующее расширение php
    настроить apcu/xcache на выделение памяти для variable cache
    и использовать дроп-ин для вордпресса object-cache.php
    соответствующего типа

    производительность возрастает достаточно существенно

    ну и про кеширование опкода не забывайте, тем же xcache/apc или opcache для новой php, для старой — eaccelerator

    написал вам письмо. если не пришло, плиз, ответьте на kotbazilio жывотное gmail.com

    спасибо

    Модератор Yui

    (@fierevere)

    永子

    если предложение заключается в том чтобы настроить вам сервер, я наверное не соглашусь, на мне итак достаточно много всего висит

Просмотр 15 ответов — с 1 по 15 (всего 16)
  • Тема «Не включается GZIP для контента» закрыта для новых ответов.