Статическое сжатие стилей и скриптов

Статическое сжатие стилей и скриптов

При помощи этой модификации можно отдавать пользователю уже сжатые алгоритмом gzip стили и скрипты. При этом объем передаваемых данных сокращается до 20 раз. Так как сжатие происходит только один раз при генерации файлов, то нагрузка на сервер при этом отсутсвует. После генерации файлы берутся из кэша. Это дает преимущество по сравнению с mod_deflate, где сжатие происходит при каждой отправке.

При помощи .htaccess устанавливаются правильные заголовки. Для старых браузеров, не поддерживающих распаковку, отдаются не сжатые файлы с расширением .nogzip.

Модификация работает в версиях 1.4 с включенным CCC

В classes\Tools.php заменить

file_put_contents($compressed_js_path, $content);
chmod($compressed_js_path, 0777);

на

file_put_contents($compressed_js_path.'.nogzip', $content);
chmod($compressed_js_path.'.nogzip', 0777);
 
$c = @gzencode($content, 9, FORCE_GZIP);
if (!empty($c)) {
    file_put_contents($compressed_js_path, $c);
    chmod($compressed_js_path, 0777);
}

заменить

file_put_contents($cache_filename, $content);
chmod($cache_filename, 0777);

на

file_put_contents($cache_filename.'.nogzip', $content);
chmod($cache_filename.'.nogzip', 0777);
$c = @gzencode($content, 9, FORCE_GZIP);
if (!empty($c)) {
    file_put_contents($cache_filename, $c);
    chmod($cache_filename, 0777);
}

В themes/mytheme/cache добавить файл .htaccess со следующим содержимым:

<IfModule mod_rewrite.c>
    RewriteEngine On
#redirect for Konqueror and old browsers
    RewriteCond %{HTTP:Accept-encoding} !gzip [OR]
    RewriteCond %{HTTP_USER_AGENT} Konqueror
    RewriteRule ^(.*)\.(css|js)$ $1.nogzip.$2 [QSA,L]
</IfModule>                

<IfModule mod_headers.c>
    Header append Vary User-Agent
#set Content-Encoding for css/js files
    <FilesMatch .*\.(js|css)$>
    Header set Content-Encoding: gzip
    Header set Cache-control: private
    </FilesMatch>
#reset Content-Encoding if nogzip
    <FilesMatch .*\.nogzip\.(js|css)$>
    Header unset Content-Encoding
    </FilesMatch>
</IfModule>

~~DISCUSSION~~

staticheskoe-szhatie-stilej-i-skriptov.txt · Последние изменения: 2015/12/27 16:22 (внешнее изменение)