Как я могу использовать сжатие gzip для файлов .css и .js на моих сайтах? - PullRequest
7 голосов
/ 09 октября 2011

Я несколько дней трудился над тем, чтобы заставить работать сжатие gzip на сайтах, которые у меня есть на сервере общего хостинга. У меня был определенный уровень успеха, но, к сожалению, файлы .css и .js не учитываются, несмотря на все мои усилия. Поскольку я использую виртуальный хостинг, у меня нет доступа к файлу конфигурации apache, поэтому я прибегнул к использованию моего файла .htaccess для достижения этой цели.

Сайт, над которым я сейчас работаю, это Peak Heat , работающий под Wordpress, и ниже .haccess файл, который я использую:

# compress text, html, javascript, css, xml:
AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/xml
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE application/rss+xml
AddOutputFilterByType DEFLATE application/js
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE application/x-javascript

## EXPIRES CACHING ##
<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType image/jpg "access 1 year"
ExpiresByType image/jpeg "access 1 year"
ExpiresByType image/gif "access 1 year"
ExpiresByType image/png "access 1 year"
ExpiresByType text/css "access 1 month"
ExpiresByType application/pdf "access 1 month"
ExpiresByType text/x-javascript "access 1 month"
ExpiresByType application/x-shockwave-flash "access 1 month"
ExpiresByType image/x-icon "access 1 year"
ExpiresDefault "access 1 week"
</IfModule>
## EXPIRES CACHING ##

<IfModule mod_headers.c>
  <FilesMatch "\.(js|css|xml|gz)$">
    Header append Vary Accept-Encoding
  </FilesMatch>
</IfModule>

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

Когда я проверяю сайт с помощью Firebug v1.8.3 с Google PageSpeed ​​v1.12, он показывает, что следующие файлы не были сжаты:

/ WP-включает / JS / JQuery / jquery.js? Вер = 1.6.1

/ WP-содержание / темы / пик тепла / скрипт / global.js

/ WP-содержание / плагины / контакт-форма-7 / jquery.form.js? Вер = 2,52

/ WP-содержание / темы / пик тепла / style.css

/ WP-содержание / плагины / контакт-форма-7 / scripts.js? Вер = 3,0

/ WP-содержание / плагины / контакт-форма-7 / styles.css? Вер = 3,0

/ WP-содержание / плагины / отзывы-виджет / отзывы-widget.css

Проверка самого URL-адреса сайта на онлайн-сайте GIDZipTest подтверждает, что сжатие включено, но когда я проверяю вышеуказанные файлы .css и .js, он говорит, что они не сжаты.

Что я могу сделать, чтобы включить все файлы .css и .js при сжатии моего сайта?

Ответы [ 2 ]

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

AddOutputFilterByType DEFLATE text/css устанавливает сжатие на deflate, а не gzip, поэтому используйте filesMatch и установите заголовок Content-Encoding на x-deflate:

<filesMatch "\.(js|css)$">
Header set Content-Encoding x-deflate
# Header set Content-Encoding compress
# Header set Content-Encoding x-gzip
</filesMatch>

Если это не удастся, раскомментируйтестроку compress и комментарий к строке x-deflate. gzip не является частью стандартной установки Apache , поэтому установите модуль gzip , если deflate недостаточно.В крайнем случае, создайте сжатые версии ваших файлов CSS и JS .

1 голос
/ 15 февраля 2015

Я думаю, что вы пропали без вести AddOutputFilterByType DEFLATE text/javascript.Добавление, которое исправило проблему для меня.

...