Подтвердить что ты не робот

Как я могу заставить сжатие gzip Apache работать?

Я не могу заставить мой сайт использовать сжатие gzip.

Недавно я наблюдал за этим video Крисом Койером на css-tricks.com. В видеоролике он говорит о возможности сжатия gzip, чтобы веб-сайты работали быстрее.

В соответствии с его инструкцией я связался с github через html5boilerplate.com, скопировал код сжатия gzip из своего файла .htaccess, вставил его в свой собственный и загрузил на свой сайт.

Я тестировал его через gzipwtf.com, и он, похоже, не работает. Может ли кто-нибудь помочь мне с этим?

Мой .htaccess файл выглядит следующим образом:

# ----------------------------------------------------------------------
# Trim www
# ----------------------------------------------------------------------

RewriteEngine On
RewriteCond %{HTTP_HOST} !^orbitprint.com$ [NC]
RewriteRule ^(.*)$ http://orbitprint.com/$1 [L,R=301]

# ----------------------------------------------------------------------
# Gzip compression
# ----------------------------------------------------------------------

<IfModule mod_deflate.c>

  # Force deflate for mangled headers developer.yahoo.com/blogs/ydn/posts/2010/12/pushing-beyond-gzipping/
  <IfModule mod_setenvif.c>
    <IfModule mod_headers.c>
      SetEnvIfNoCase ^(Accept-EncodXng|X-cept-Encoding|X{15}|~{15}|-{15})$ ^((gzip|deflate)\s*,?\s*)+|[X~-]{4,13}$ HAVE_Accept-Encoding
      RequestHeader append Accept-Encoding "gzip,deflate" env=HAVE_Accept-Encoding
    </IfModule>
  </IfModule>

  # Compress all output labeled with one of the following MIME-types
  <IfModule mod_filter.c>
    AddOutputFilterByType DEFLATE application/atom+xml \
                                  application/javascript \
                                  application/json \
                                  application/rss+xml \
                                  application/vnd.ms-fontobject \
                                  application/x-font-ttf \
                                  application/xhtml+xml \
                                  application/xml \
                                  font/opentype \
                                  image/svg+xml \
                                  image/x-icon \
                                  text/css \
                                  text/html \
                                  text/plain \
                                  text/x-component \
                                  text/xml
  </IfModule>

</IfModule>
4b9b3361

Ответ 1

Попробуйте следующее:

####################
# GZIP COMPRESSION #
####################
SetOutputFilter DEFLATE
AddOutputFilterByType DEFLATE text/html text/css text/plain text/xml application/x-javascript application/x-httpd-php
BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4\.0[678] no-gzip
BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
BrowserMatch \bMSI[E] !no-gzip !gzip-only-text/html
SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png)$ no-gzip

Ответ 2

Я попытался, и это лучше, чем другие, которые я думаю... Просто вставьте файл .htaccess, а не проверяйте время загрузки Google PageSpeed ​​, Pingdom Tools и GTmetrics.

# Enable GZIP
<ifmodule mod_deflate.c>
AddOutputFilterByType DEFLATE text/text text/html text/plain text/xml text/css application/x-javascript application/javascript
BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4\.0[678] no-gzip
BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
</ifmodule>

# Expires Headers - 2678400s = 31 days
<ifmodule mod_expires.c>
  ExpiresActive On
  ExpiresDefault "access plus 1 seconds"
  ExpiresByType text/html "access plus 7200 seconds"
  ExpiresByType image/gif "access plus 2678400 seconds"
  ExpiresByType image/jpeg "access plus 2678400 seconds"
  ExpiresByType image/png "access plus 2678400 seconds"
  ExpiresByType text/css "access plus 518400 seconds"
  ExpiresByType text/javascript "access plus 2678400 seconds"
  ExpiresByType application/x-javascript "access plus 2678400 seconds"
</ifmodule>

# Cache Headers
<ifmodule mod_headers.c>
  # Cache specified files for 31 days
  <filesmatch "\.(ico|flv|jpg|jpeg|png|gif|css|swf)$">
  Header set Cache-Control "max-age=2678400, public"
  </filesmatch>
  # Cache HTML files for a couple hours
  <filesmatch "\.(html|htm)$">
  Header set Cache-Control "max-age=7200, private, must-revalidate"
  </filesmatch>
  # Cache PDFs for a day
  <filesmatch "\.(pdf)$">
  Header set Cache-Control "max-age=86400, public"
  </filesmatch>
  # Cache Javascripts for 31 days
  <filesmatch "\.(js)$">
  Header set Cache-Control "max-age=2678400, private"
  </filesmatch>
</ifmodule>

Ответ 3

Ваш .htaccess должен работать нормально; это зависит от четырех различных модулей Apache (по одной на каждую директиву <IfModule>). Я предполагаю одно из следующего:

  • на вашем сервере Apache не установлены модули mod_filter, mod_deflate, mod_headers и/или mod_setenvif. Если вы можете получить доступ к конфигурации сервера, проверьте /etc/apache2/httpd.conf (и связанные с ним файлы конфигурации Apache); в противном случае вы можете увидеть, какие модули загружаются через phpinfo(), в разделе apache2handler (см. прикрепленное изображение); (EDIT) ИЛИ, вы можете открыть окно терминала и выдать команду sudo apachectl -M, которая будет отображать загруженные модули;

  • если вы получите ошибку внутреннего сервера http 500, вашему серверу не разрешено использовать файлы .htaccess;

  • вы пытаетесь загрузить файл PHP, который отправляет свои собственные заголовки (перезаписывая Apache'sheaders), тем самым "запутывая" браузер.

В любом случае вы должны дважды проверить свои журналы конфигурации сервера и, чтобы узнать, что происходит не так. Чтобы убедиться, попробуйте использовать самый быстрый способ, предложенный здесь в документах Apache:

AddOutputFilterByType DEFLATE text/html text/plain text/xml

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

(ИЗМЕНИТЬ) Если требуемые модули есть (в модуле dar Apache), но не загружены, просто отредактируйте файл /etc/apache 2/httpd.conf и добавьте директиву LoadModule для каждого из них.

Если необходимых модулей нет (ни загружено, ни в каталоге модулей Apache), я боюсь, что единственным вариантом является переустановка Apache (полная версия).

phpinfo() apache2handler section

Ответ 4

Прежде всего перейдите в apache/bin/conf/httpd.conf и убедитесь, что mod_deflate.so включен.

Затем перейдите в файл .htaccess и добавьте следующую строку:

SetOutputFilter DEFLATE

Это должно вывести весь контент, который будет использоваться как gzipped, я пробовал его, и он работает.

Ответ 5

Включите эту проблему, используя ту же конфигурацию .htaccess. Я понял, что мой сервер обслуживал файлы javascript как text/javascript вместо application/javascript. Как только я добавил text/javascript в объявление AddOutputFilterByType, gzip начал работать.

Что касается использования javascript как text/javascript: в начале моего файла .htaccess был объявлен AddType 'text/javascript' js. После удаления (он был добавлен по ошибке), запуск javascript в качестве application/javascript.

Ответ 6

В моем случае я использовал следующий код для включения сжатия gzip в веб-сервере apache.

  # Compress HTML File, CSS File, JavaScript File, Text File, XML File and Fonts
    AddOutputFilterByType DEFLATE text/plain
    AddOutputFilterByType DEFLATE text/html
    AddOutputFilterByType DEFLATE text/xml
    AddOutputFilterByType DEFLATE application/json
    AddOutputFilterByType DEFLATE application/x-httpd-php
    AddOutputFilterByType DEFLATE text/css
    AddOutputFilterByType DEFLATE application/xml
    AddOutputFilterByType DEFLATE application/xhtml+xml
    AddOutputFilterByType DEFLATE application/rss+xml
    AddOutputFilterByType DEFLATE application/javascript
    AddOutputFilterByType DEFLATE application/x-javascript
    AddOutputFilterByType DEFLATE font/otf
    AddOutputFilterByType DEFLATE font/ttf

Я взял ссылку из http://www.tutsway.com/enable-gzip-compression-using-htacess.php.

Ответ 7

В моем случае добавьте только эту строку

SetOutputFilter DEFLATE

Ответ 8

Разрешить сжатие через .htaccess

Для большинства людей, читающих это, сжатие включено добавлением некоторого кода в файл с именем .htaccess на их веб-хосте/сервере. Это означает, что вы отправляетесь в диспетчер файлов (или куда бы вы не добавляли или не загружали файлы) на своем веб-хостинге.

Файл .htaccess управляет многими важными вещами для вашего сайта.

Код ниже должен быть добавлен в ваш файл .htaccess...

<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>

Сохраните файл .htaccess, а затем обновите веб-страницу.

Проверьте, работает ли сжатие с помощью инструмента сжатия Gzip.