Сжатие Gzip через .htaccess не работает

#php #html #.htaccess #web #gzip

#php #HTML #.htaccess #веб #gzip

Вопрос:

Я создавал сайт и проверял его скоростьgtmetrix.com. Я использовал следующий .htaccess файл для сжатия .js, .css и многих других файлов.

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

ErrorDocument 401 /401.php
ErrorDocument 403 /403.php
ErrorDocument 404 /404.php
ErrorDocument 500 /500.php

Options Indexes
IndexOptions FancyIndexing

ExpiresActive On
ExpiresDefault "access plus 7 days"
ExpiresByType application/javascript A2592000
ExpiresByType application/x-javascript A2592000
ExpiresByType text/javascript A2592000
ExpiresByType text/html A2592000
ExpiresByType text/xml A2592000
ExpiresByType text/css A2592000
ExpiresByType text/plain A2592000
ExpiresByType image/gif A2592000
ExpiresByType image/jpg A2592000
ExpiresByType image/jpeg A2592000
ExpiresByType image/png A2592000
ExpiresByType image/bmp A2592000
ExpiresByType application/x-shockwave-flash A2592000

<FilesMatch ".(html?|txt)$">
  ForceType 'text/html; charset=UTF-8'
</FilesMatch>

<FilesMatch ".(css)$">
  ForceType 'text/css; charset=UTF-8'
</FilesMatch>

<FilesMatch ".(js)$">
  ForceType 'text/javascript; charset=UTF-8'
</FilesMatch>

<FilesMatch ".(css|js)$">
  Header append Vary Accept-Encoding
</FilesMatch>
  

Но когда я запускаю тест страницы, он показывает следующее ——

 Compressing the following resources with gzip could reduce their transfer size by 882B (48% reduction).

Compressing http://wooflux.co.cc/ could save 645B (48% reduction).
Compressing http://wooflux.co.cc/style.css could save 237B (51% reduction).
  

Но я выполнил gzip сжатие своего .htaccess файла. Я не понимаю, что здесь не так, и, кстати, я очень новичок в этом стиле кодирования. Поэтому, пожалуйста, дайте мне знать, если я делаю какую-либо ошибку или нет.

Ответ №1:

Я не использовал mod_gzip, но вот мой .htaccess, который я использую для gzip .js, .css и других файлов через mod_deflate:

 #Gzip
<ifmodule mod_deflate.c>
AddOutputFilterByType DEFLATE text/text text/html text/plain text/xml text/css application/x- javascript application/javascript
</ifmodule>
#End Gzip
  

На случай, если вы еще не знаете об этом, Firebug очень полезен для проверки, находится ли загруженный контент в архивированном виде. Нажмите на вкладку «Сеть» в Firebug, а затем выполните shift-f5, чтобы заставить Firefox перезагрузить все файлы .js и .css, чтобы они отображались на панели «Сеть». Нажмите » » рядом с файлом .js или .css и перейдите на вкладку «Заголовки». Если ответ архивирован, вы увидите «gzip с кодировкой содержимого» в разделе заголовков ответа. Я представляю, что эквиваленты IE, Safari и Chrome предлагают ту же возможность.

Есть одна ошибка, касающаяся архивирования файлов .js и .css в IE6, на которую следует обратить внимание. Я думаю, что это применимо только к пользователям IE6 SP1.

Комментарии:

1. Кстати, убедитесь, что модули mod_gzip и / или mod_gzip Apache установлены. Также вы можете захотеть проверить журналы ошибок Apache на наличие любых применимых ошибок.

2. я использовал ваш скрипт в своем файле .htaccess, но я получил внутреннюю ошибку сервера.

Ответ №2:

Вот синтаксис для использования с расширениями файлов.

 <IFModule mod_deflate.c>
    <filesmatch ".(js|css|html|jpg|png|php)$">
        SetOutputFilter DEFLATE
    </filesmatch>
</IFModule>
  

Ответ №3:

В моем случае mod_gzip или mod_deflate не работали даже после того, как они были включены и записаны в файл htaccess.

Затем я в конечном итоге использовал ‘ob_gzhandler’ в моем php-файле, что помогло мне сжать мои php- и html-файлы. Это не так хорошо, как mod_gzip или mod_deflate, но служит вам временно на случай, если вам не повезет с другими.

Код, который я использовал на моем index.php файл вверху, перед загрузкой чего-либо,

 <? ob_start("ob_gzhandler"); ?>
  

Комментарии:

1. Вы знаете, есть ли способ заставить это работать в файлах .js?