Назад | Перейти на главную страницу

Невозможно сжать некоторые файлы JS и CSS

Я оптимизирую магазин 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