Объединяя deflate и minify - я создаю накладные расходы? - PullRequest
6 голосов
/ 08 января 2010

Я минимизирую свои css и js файлы на лету с помощью google.codes minify. Я также установил свой .htaccess для использования deflate во всех моих файлах css и js - причина, по которой некоторые js-файлы (например, shadowbox и tinymce) ссылаются на другие js-файлы в коде. Так что я сжимаю с apache deflate, а также минимизирую, сжимает некоторые файлы js и css с помощью gzip - я создаю накладные расходы, выполняя это - сначала выполняется gzip (minify), а затем zlib (deflate). Или apache deflate игнорирует уже сжатые файлы, имеющие атрибуты, установленные minify в заголовках. У кого-нибудь есть опыт с этим?

Ответы [ 3 ]

5 голосов
/ 08 января 2010

Сокращение + дефлирование / сжатие прекрасно работает вместе.

Я использую mod rewrite для этой цели, я предварительно собрал все файлы css / js в 2 версии, оригинальную и версию .css.gz / .js.gz.

Браузер просто отправляет запрос .js / .css, сервер проверяет наличие .js.gz / .css.gz и возвращает сжатый контент, если выполняются определенные условия.

Так что не имеет значения, что файл js / css загружается на лету из js (например, ваш shadowbox или tinymce)

В основном, как это

RewriteEngine On
RewriteBase /

#Check for browser's Accept-Encoding,
RewriteCond "%{HTTP:Accept-Encoding}" "gzip.*deflate|deflate.*gzip"

#check file name is endswith css or js
RewriteCond %{REQUEST_FILENAME} "\.(css|js)$"

#check existance of .gz file name
RewriteCond %{REQUEST_FILENAME}.gz -s

#rewrite it to .js.gz or .css.gz
RewriteRule ^.*$ %{REQUEST_URI}.gz [L]

#update some response header
<FilesMatch "\.js\.gz$">
    AddEncoding gzip .gz
    ForceType "text/javascript"
</FilesMatch>

<FilesMatch "\.css\.gz$">
    AddEncoding gzip .gz
    ForceType "text/css"
</FilesMatch>
1 голос
/ 03 июня 2010

Minify не обслуживает файлы через Apache, поэтому двойная кодировка отсутствует.

С помощью фильтра DEFLATE Apache каждый раз сжимает запрошенный файл на лету. Minify gzips файл при первом запросе, а затем отправляет предварительно кэшированную версию для последующих запросов.

Будучи основанным на PHP, он меняет производительность на гибкость и простоту обслуживания, но если вы добавите прокси-кеш перед ним, он будет работать так же, как и конфигурация S.Mark.

1 голос
/ 08 января 2010

gzip использует алгоритм сжатия zlib, и большинство байтовых последовательностей не будут хорошо сжиматься во второй раз.

...