Я минимизирую свои css и js-файлы на лету с помощью google.codes minify. Я также установил мой .htaccess для использования deflate во всех моих файлах css и js - причина, связанная с некоторыми js-файлами (например, shadowbox и tinymce) ссылкой на другие js-файлы в коде. Итак, я сжимаю apache deflate, а также уменьшаю сжатие некоторых js и css-файлов с помощью gzip. Я создаю накладные расходы, делая это - сначала gzipping (minify), а затем zlib (deflate) снова запустится. Или apache deflate проигнорирует уже обработанные gzipped файлы, имеющие атрибуты, заданные с помощью minify в заголовках. У кого-нибудь есть опыт с этим?Сочетание deflate и minify - я создаю накладные расходы?
ответ
Минимизация + спуск/gzipping работает отлично вместе.
Я использую mod rewrite для этой цели, я предварительно создал все файлы css/js в 2 версии, оригинал и .css.gz/.js.gz.
Браузер просто отправляет запрос .js/.css, сервер проверяет существование .js.gz/.css.gz и возвращает gzipped-контент, если определенные условия совпадают.
Так это не имеет значения для 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>
Спасибо за это! Отличный сценарий у вас есть! Но вы знаете, что инструмент minify (а не минирование вообще) из google фактически минимизирует AND отправляет файлы со сжатием, а затем я буду делать это снова с частью сервера (apache deflate на лету). И, делая это дважды, я задавался вопросом, создавал ли я накладные расходы ..? извините, если я не был ясен ... –
Вы имеете в виду двойной gzipping? Думаю, это не будет, потому что браузеры не будут знать, что нужно расстегивать 2 раза. – YOU
Gzip использует алгоритм сжатия Zlib , и большинство байтовых последовательностей не будут хорошо сжиматься во второй раз.
О, я не знал, что gzip использует библиотеки zlib .. Я думал, что это была разница между gzip и deflate. gzip с использованием библиотек gzip и сглаживания с использованием библиотек zlib. но вопрос в том, будет ли файл сдвоен спрессован - я уверен, что он не станет намного меньше - но клиенту придется сначала дефрагментировать дефлат, а затем миниатюрные файлы - то же самое для сервера. так что там должно быть накладные расходы ..? –
Если вы уже знаете, что он не станет меньше, то зачем это делать? :) –
Minify не обслуживает файлы через Apache, поэтому нет двойного кодирования.
С фильтром DEFLATE Apache gzips запрашивает файл на лету каждый раз. Минимизировать gzips файл по первому запросу, а затем отправляет предварительно кэшированную версию для последующих запросов.
Будучи основанным на PHP, он обеспечивает производительность для гибкости и простоты обслуживания, но если вы бросите прокси-кеш перед ним, он будет работать так же, как и конфигурация S.Mark.
Это действительно хороший вопрос! Я не знаю, каков ответ, но автор Minify кажется очень отзывчивым в своей дискуссионной группе: https://groups.google.com/group/minify – Annie