Я оптимизирую магазин Magento, а также некоторые JS и CSS (скомпилированные и минимизированные в MEDIA
папка) не обслуживаются в сжатом виде, как должны.
Все страницы сжаты (например, эта HTML-страница), но некоторый контент - нет (например, этот файл JS).
Тестирование через gtmetrix.com и whatsmyip's HTTP-тест сжатия
У меня есть этот конфиг в .htaccess
:
<IfModule mod_deflate.c>
# Insert filter on all content
SetOutputFilter DEFLATE
# Insert filter on selected content types only
#AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css text/javascript
# Netscape 4.x has some problems...
BrowserMatch ^Mozilla/4 gzip-only-text/html
# Netscape 4.06-4.08 have some more problems
BrowserMatch ^Mozilla/4\.0[678] no-gzip
# MSIE masquerades as Netscape, but it is fine
BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
# Don't compress images
#SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png)$ no-gzip dont-vary
# Make sure proxies don't deliver the wrong content
Header append Vary User-Agent env=!dont-vary
</IfModule>
# compress text, HTML, JavaScript, CSS, and 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/javascript
AddOutputFilterByType DEFLATE application/x-javascript
AddOutputFilterByType DEFLATE application/js
# remove browser bugs
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
Что я мог упустить?
Вы можете использовать это в своем .htaccess
# BEGIN Compress text files
<ifModule mod_deflate.c>
<filesMatch "\.(css|js|x?html?|php)$">
SetOutputFilter DEFLATE
</filesMatch>
</ifModule>
# END Compress text files
Это часть примера конфигурации .htaccess, приводящей к сжатию всех ваших файлов * .css, * .js, * .html, * .xhtml и * .php, перечисленных здесь (http://www.samaxes.com/2009/01/more-on-compressing-and-caching-your-site-with-htaccess/). Там также указано, как настроить истечение срока действия по типу для заголовков и кеширования. Но для вас это не так важно.
Другой способ настроить сжатие - использовать внешний модуль расширения для apache. mod_gzip
. Это тоже очень популярное решение. Чтобы использовать это решение, вы должны написать в своем .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>
Более подробную информацию можно найти в этой статье (http://www.samaxes.com/2008/04/htaccess-gzip-and-cache-your-site-for-faster-loading-and-bandwidth-saving/).
У меня была та же проблема, я тестировал Chrome 38.0.2125.104 (64-бит) Dev Tools, анализируя заголовки ответов сервера.
Я думаю, вам следует добавить эту директиву в свой htaccess
AddOutputFilterByType DEFLATE text/javascript