Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

Модуль MCLite - Автоматическое сжатие CSS [Поддержка]


Recommended Posts

MCLite - Автоматическое сжатие CSS


MCLite - Автоматическое сжатие CSS


Как работает MCLite

Работает он по тому же принципу, что и MCJ. Т.е. перед тем как послать страницу клиенту он сканирует ее код, находя в нем все CSS файлы, и обрабатывает их в соответствии с настройками, а настроек этих целая куча (как и библиотек для минимизации). После обработки он сохраняет новые (сжатые) CSS файлы во временную папку. Затем подменяет ссылки на минимизированные CSS файлы в коде страницы. Таким образом оригинальные CSS файлы остаются нетронутыми. После этого отправкой файлов стилей для страницы занимается сервер, а не PHP. Сжимаются и передаются только те стили, которые используются на посещаемой странице.

Возможности MCLite

  • Наличие нескольких библиотек для минимизации CSS
  • Возможность вставлять в файлы стилей изображения в кодировке base64, вне зависимости от выбранного минимизатора (преимущества)
  • Упаковка файлов стилей алгоритмом gzip во время создания файла. Т.е. не будет тратится время на сжатие "на лету"
  • Возможность использовать Domain CDN для отдачи CSS и изображений
  • Имеется функция оптимизации базы данных
  • Несколько режимов объединения файлов
  • Возможность исключить определенные файлы из обработки/объединения/минимизации
  • Имеется функция сжатия HTML (на лету, без кэширования)
  • Наличие нескольких библиотек для сжатия HTML
  • Минимум файлов
  • Удобный менеджер кэша со статистикой сжатия
  • Наличие деинсталлятора (удаляет вместе с файлами и записями модуля)

Поддерживаемые минимизаторы

CSS:

  • [CSSMin] Joe Scylla
  • [CSSMin Regex] Shashakhmetov Talgat
  • [YUI CSS Compressor php port] Tubal Martin
  • [CanCSSMini] andi
  • [Crunch CSS] Shirley Kaiser

HTML:

[*][Minify HTML] Stephen Clay

[*]

[htmlMin Regex] Shashakhmetov Talgat
[*][Crunch HTML] Shirley Kaiser
[/list]
Minify HTML рекомендую использовать только с кэшированием HTML на стороне сервера, код сжимает хорошо, но медленный. Сводную таблицу сжатия можно посмотреть здесь.


Поддерживаемые версии
  • Все версии, начиная от 1.5.1 до 1.5.6.4 включительно.

Инструкция по установке/обновлению
 
 

 


Обновление

Установка

Шаг 1. Копирование файлов

Скопировать содержимое папки "upload" в корневую директорию сайта.


Шаг 2. Редактирование файлов

В файле "index.php" перед строкой $response->output(); (в самом конце файла)
добавить:

 

В файле "system/library/response.php" строку private $output; (5 строка) заменить на public $output;

Шаг 3. Добавление записей в базу данных

Скопировать в корневую директорию файл "install.php". Выполнить его через адресную строку браузера. Например, http://адрес-сайта/install.php. Он добавит новые значения в базу данных.

После выполнения обязательно удалить файл!!!

Шаг 4. Настройка привилегий в OpenCart

В административной панели сайта перейти в "Система->Пользователи->Группы пользователей". Напротив строки "Главный администратор" нажать "изменить".

В списках "Разрешен просмотр" и "Разрешено внесение изменений" поставить галочку напротив "mcj/setting", либо нажать "Выделить все". Сохранить.

Шаг 5. Настройка .htaccess

Для использования статического сжатия файлов в файл .htaccess необходимо добавить:



AddType text/css .css .cssgzAddEncoding x-gzip .cssgz 
 

Так же можете посмотреть содержимое рекомендуемого мной .htaccess по адресу http://mcj.halfhope.ru/htaccess.html

  1. Скопировать все файлы из папки upload в корень сайта (с заменой)
 
//MCLiteif (preg_match('/head>/im', $response->output) && !defined('DIR_CATALOG')) {    $loader->library('mclite/mclite.class');    $mclite = new mclite($registry, $response->output);    $response->output = $mclite->output;} 
 

  • Добавил
  • Добавлено
    08.09.2014
  • Категория
  • Системные требования
  • Метод активации
    Без активации
  • Ioncube Loader
    Нет
  • ocStore
    1.5.5.1.2
    1.5.5.1.1
    1.5.5.1
  • OpenCart.Pro, ocShop
    OcShop 1.5.6.4.х
  • Обращение к серверу разработчика
    Нет

 

Надіслати
Поділитися на інших сайтах

 Warning: require(/var/www/natur101/data/www/ou.com/system/library/mclite/lib/JSMin.php): failed 
to open stream: No such file or directory in /var/www/natur101/data/www/ou.com/system/library/mclite/mclite.class.php on line 817
Fatal error: require(): Failed opening required '/var/www/natur101/data/www/ou.com/system/library/mclite/lib/JSMin.php' (include_path='.:/usr/share/pear:/usr/share/php') in /var/www/natur101/data/www/ou.com/system/library/mclite/mclite.class.php on line 817

прикольно в футере висит

 

поставил в "Общие" - HTMLMin Regex и  в "Настройка сжатия CSS" - CSSMin Regex ошибки пропали .

Я так понимаю он тесно с кешем работает . У меня крон-настроен на удаление кеша каждый день. Есть ли смысл его использовать  ? 

Надіслати
Поділитися на інших сайтах


 Warning: require(/var/www/natur101/data/www/ou.com/system/library/mclite/lib/JSMin.php): failed 
to open stream: No such file or directory in /var/www/natur101/data/www/ou.com/system/library/mclite/mclite.class.php on line 817
Fatal error: require(): Failed opening required '/var/www/natur101/data/www/ou.com/system/library/mclite/lib/JSMin.php' (include_path='.:/usr/share/pear:/usr/share/php') in /var/www/natur101/data/www/ou.com/system/library/mclite/mclite.class.php on line 817

прикольно в футере висит

 

 

Ой, сейчас поправлю

 

[uPD] Проблема была в классе CssMin он использует JsMin для сжатия expression выражений в файлах стилей. Исправлено добавлением класса JavaScript минимизатора JsMin. 

Змінено користувачем halfhope
Надіслати
Поділитися на інших сайтах

Ой, сейчас поправлю

 

[uPD] Проблема была в классе CssMin он использует JsMin для сжатия expression выражений в файлах стилей. Исправлено добавлением класса JavaScript минимизатора JsMin. 

Что посоветуете для сжатия использовать,какой класс  ?

Надіслати
Поділитися на інших сайтах


Как работают CSS минимизаторы здесь говорить не буду.

  1. Скажу только, что CssMin работает на как все остальные, но он иногда с ошибками обрабатывает код @media и т.д. Т.е. у адаптивных шаблонов может полететь адаптивная верстка. Но, все же он первый в списке рекомендуемых.
  2. Второй в списке это YUI CSS Compressor php port это порт YUI CSS Compressor для PHP, про него ничего конкретного сказать не могу, сжимает хорошо и качественно.
  3. Третий в списке это CanCSSMini, представляет из себя простой минимизатор на регулярных выражениях. 

Рекомендую проверять и тестировать именно в этом порядке. Остальные минимизаторы так себе, просто убирают пробелы, комментарии и переносы строк. Сделал сравнительную таблицу по скорости и степени сжатия каждого минимизатора ее можно посмотреть здесь.

Змінено користувачем halfhope
Надіслати
Поділитися на інших сайтах

 

Я так понимаю он тесно с кешем работает . У меня крон-настроен на удаление кеша каждый день. Есть ли смысл его использовать  ? 

 

 

Нет, не имеет смысла. MCJ не использует встроенную в OpenCart систему кэширования, для отдачи используются только статический файлы. Он просто сканирует используемые на странице стили, собирает их содержимое в один файл, минимизирует, сжимает и сохраняет в отдельный файл с уникальным именем (хеш названий файлов, которые в нем находятся). А при вторичном посещении сайта он опять сканирует используемые стили, вычисляет уникальное имя файла и проверяет есть он или нет. 

Надіслати
Поділитися на інших сайтах

Столкнулся с такими проблемами:

1. При включении Gzip сжатие, не указан срок действия кэша

2. При сжатии HTML при помощи библиотек Crunch_HTML и HTMLMin Regex, в карточке товара не работают "+" и "-" кол-ва товара. При использовании библиотеки Minify HTML данной проблемы нет, но вот медленный.

Надіслати
Поділитися на інших сайтах


1. За отправку заголовков отвечает сервер, если у Вас стоит Apache, то измените файл .htaccess как написано в рекомендации. Только что исправил секцию <IfModule mod_headers.c>

2. Сжатие HTML добавлено для тех случаев, когда используется кэширование вывода на стороне сервера. Без него не критично, все равно в большинстве случаев весь траффик сжимается Gzip-ом.

 

При использовании Crunch HTML и если у Вас достаточно знаний, то можете посмотреть в коде страницы что именно вызывает ошибку и закомментировать ненужную строку в файле "system\library\mclite\lib\Crunch_HTML.php".

Надіслати
Поділитися на інших сайтах

У меня стоит ngnix. Что делать?

Файл "system\library\mclite\lib\Crunch_HTML.php" открыл посмотрел и ничего не понял.

Я не программист, помогите пожалуйста разобраться!

Надіслати
Поділитися на інших сайтах


Аналог файла .htaccess у nginx - файл nginx.conf в него нужно добавить 

location ~* \.(?:ico|css|js|gif|jpe?g|png|cssgz|jsgz)$ {
    expires 30d;
    add_header Pragma public;
    add_header Cache-Control "public";
}
Надіслати
Поділитися на інших сайтах

 

Аналог файла .htaccess у nginx - файл nginx.conf в него нужно добавить 

location ~* \.(?:ico|css|js|gif|jpe?g|png|cssgz|jsgz)$ {
    expires 30d;
    add_header Pragma public;
    add_header Cache-Control "public";
}

Да у меня помесь бульдога с носорогом, то есть ngnix и apache, ибо файл httaccess присутствует, а вот nginx.conf - нет.

Тип сервера: nginx admin

ПО сервера: PHP/5.3.29
Надіслати
Поділитися на інших сайтах


В Вашем случае Apache используется для php, а nginx для отдачи статики (css, js, jpg файлов). Если У Вас выделенный сервер vps/vds, то ищите этот файл. Если shared хостинг, то можете спросить о настройке этого файла тех. поддержку. 

Надіслати
Поділитися на інших сайтах

В Вашем случае Apache используется для php, а nginx для отдачи статики (css, js, jpg файлов). Если У Вас выделенный сервер vps/vds, то ищите этот файл. Если shared хостинг, то можете спросить о настройке этого файла тех. поддержку. 

 

В следующей версии постараюсь добавить опциональную динамическую отдачу CSS со всеми нужными заголовками, только для того, чтобы Google Page Speed не ругался. Т.к., к сожалению, пользователи все время говорят мне о том, что Google Page Speed написал мне, что что-то не включено.

 

Google Page Speed показывает лишь наличие или отсутствие некоторых паттернов клиентской оптимизации, если какого-то паттерна нет, это еще не значит, что сайт тормозит. Сейчас MCLite объединяет и сжимает CSS, а так же ресурсы в них, для того, чтобы уменьшить количество запросов к серверу и сократить очередь загрузки файлов. Помните, что к каждому проекту нужен свой подход. 

Надіслати
Поділитися на інших сайтах

В следующей версии постараюсь добавить опциональную динамическую отдачу CSS со всеми нужными заголовками, только для того, чтобы Google Page Speed не ругался. Т.к., к сожалению, пользователи все время говорят мне о том, что Google Page Speed написал мне, что что-то не включено.

 

Google Page Speed показывает лишь наличие или отсутствие некоторых паттернов клиентской оптимизации, если какого-то паттерна нет, это еще не значит, что сайт тормозит. Сейчас MCLite объединяет и сжимает CSS, а так же ресурсы в них, для того, чтобы уменьшить количество запросов к серверу и сократить очередь загрузки файлов. Помните, что к каждому проекту нужен свой подход. 

Очень нужное обновление! Буду ждать!

Кстати со стороны сервера в конфиге указал "expires 7d", но безуспешно( Все по прежнему

Надіслати
Поділитися на інших сайтах


Очень нужное обновление! Буду ждать!

Кстати со стороны сервера в конфиге указал "expires 7d", но безуспешно( Все по прежнему

C трудом, но разобрался, теперь все работает! Тех поддержка сделала сжатие Gzip на своей стороне.

СПАСИБО автору за классный модуль да еще и бесплатный! Теперь по PageSpeed Insights имею 88-91 в зависимости от скорости ответа сервера... Вот бы еще JavaScript и CSS в футтер запихнуть, но читал что это нереально(

Надіслати
Поділитися на інших сайтах


C трудом, но разобрался, теперь все работает! Тех поддержка сделала сжатие Gzip на своей стороне.

СПАСИБО автору за классный модуль да еще и бесплатный! Теперь по PageSpeed Insights имею 88-91 в зависимости от скорости ответа сервера... Вот бы еще JavaScript и CSS в футтер запихнуть, но читал что это нереально(

 

CSS нельзя запихивать в футер, они должны загружаться самыми первыми, это Вам даже Google PageSpeed не посоветует. А насчет блокирующего JavaScript я уже писал здесь

Надіслати
Поділитися на інших сайтах

CSS нельзя запихивать в футер, они должны загружаться самыми первыми, это Вам даже Google PageSpeed не посоветует. А насчет блокирующего JavaScript я уже писал здесь

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

Надіслати
Поділитися на інших сайтах


  • 1 month later...
  • 3 weeks later...

Вброшу свои 5 копеек. Решил пощупать модуль. При прописывании рекомендованной строчки в htaccess

# 120 days
    <FilesMatch "\.(html|htm|php)$">
        Header set Cache-Control "max-age=7776000, private, must-revalidate"
    </FilesMatch>

 

в ИЕ начинаются траблы при добавлении товаров через модуль cartpopup + в модуле simple. Ослик некорректно отображает изменения. Например: при оформлении заказа через симплу и удалении этого товара ИЕ не редиректит в пустую корзину, а остается в модуле оформления с этим же товаром. После принудительного обновления страницы выдает, что корзина пуста. Ну и с модулем всплывающей корзины примерно та же трабла. Визуально добавляет 1 товар нормуль, а при попытках добавления других, отображает всё тот же первый товар.

 

Всё это мелочи жизни конечно. В остальных браузер как всегда всё корректно отрабатывает :)

Надіслати
Поділитися на інших сайтах


  • 2 months later...

Добрый день ! 
Поставил модуль, отлично работает, увеличил балы в PageSpeed Insights, автору большое спасибо!

После включения CDN в модуле,посыпалась ошибка на странице оформелнеия заказ(установлен Simple) при  переключении "Зарегистрироваться" - Да/Нет, обновляются списки полей и выскакиевает ошибка "Notice: Undefined offset: 0 in /home/ecoevexm/public_html/system/library/mclite/mclite.class.php on line 380"

Надіслати
Поділитися на інших сайтах


  • 1 month later...

Здравствуйте, автор. Установил ваш модуль. Переключал различные варианты сжатия, но результат показывает, что ничего даже на 1% не сжимается. Проверял с помощью инструмента Google https://developers.google.com/speed/pagespeed/insights/?url=http%3A%2F%2Fsanan-cctv.ru%2F&tab=mobile

 

Мой сайт http://sanan-cctv.ru

Надіслати
Поділитися на інших сайтах


Здравствуйте, автор. Установил ваш модуль. Переключал различные варианты сжатия, но результат показывает, что ничего даже на 1% не сжимается. Проверял с помощью инструмента Google https://developers.google.com/speed/pagespeed/insights/?url=http%3A%2F%2Fsanan-cctv.ru%2F&tab=mobile

 

Мой сайт http://sanan-cctv.ru

 

Добрый вечер. 

 

Тормоза.

 

Вижу, что сайт тормозит, но причина тому не стили и скрипты. Скачайте opencart той же версии, что и Ваш скопируйте(с заменой) из скачанного файл system/library/response.php.

 

Модуль.

 

Для того, чтобы модуль нормально обработал стили необходимо в файле catalog/view/theme/название-вашей-темы/common/header.tpl найти все стили и привести их к следующему формату:

<link rel="stylesheet" href="Путь к файлу" media="screen" />

Сейчас у Вас стоит вот такой формат:

<link href="Путь к файлу" rel="stylesheet" media="screen" />
Надіслати
Поділитися на інших сайтах

Спасибо за ответ. Сделал как вы написали. Проверил еще раз и получил от гугла зеленый свет, но вот что касается загрузки с мобильных гаджетов, то гугл дал красный свет. Я так понял для мобильных устройств нужна отдельная оптимизация и ваш модуль для этого не предназначен?

 

 

Добрый вечер. 

 

Тормоза.

 

Вижу, что сайт тормозит, но причина тому не стили и скрипты. Скачайте opencart той же версии, что и Ваш скопируйте(с заменой) из скачанного файл system/library/response.php.

 

Модуль.

 

Для того, чтобы модуль нормально обработал стили необходимо в файле catalog/view/theme/название-вашей-темы/common/header.tpl найти все стили и привести их к следующему формату:

<link rel="stylesheet" href="Путь к файлу" media="screen" />

Сейчас у Вас стоит вот такой формат:

<link href="Путь к файлу" rel="stylesheet" media="screen" />
Надіслати
Поділитися на інших сайтах


Сделал тест на Яндексе. 5407мс это офигеть как много?

 

 

 

Код статуса HTTP: "200 OK"
Время ответа сервера: 5407мс
IP сайта: 212.192.194.11
Кодировка: UTF-8(unicode-1-1-utf-8, UTF8)
Размер страницы: 45.63Кб
Заголовки:
  • Server: nginx/1.2.0
  • Date: Fri, 27 Feb 2015 03:40:24 GMT
  • Content-Type: text/html; charset=utf-8
  • Transfer-Encoding: chunked
  • Connection: keep-alive
  • Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
  • Expires: Thu, 19 Nov 1981 08:52:00 GMT
  • X-Powered-By: PHP/5.3.13
  • Set-Cookie: PHPSESSID=55042e8e54f9bb5011813eda4548cd44; path=/; HttpOnly
  • Set-Cookie: language=ru; expires=Sun, 29-Mar-2015 03:40:21 GMT; path=/; domain=sanan-cctv.ru
  • Set-Cookie: currency=RUB; expires=Sun, 29-Mar-2015 03:40:21 GMT; path=/; domain=sanan-cctv.ru
  • Set-Cookie: language=ru; expires=Sun, 29-Mar-2015 03:40:21 GMT; path=/; domain=sanan-cctv.ru
  • Pragma: no-cache
Надіслати
Поділитися на інших сайтах


 

Сделал тест на Яндексе. 5407мс это офигеть как много?

 

 

 

Код статуса HTTP: "200 OK"
Время ответа сервера: 5407мс
IP сайта: 212.192.194.11
Кодировка: UTF-8(unicode-1-1-utf-8, UTF8)
Размер страницы: 45.63Кб
Заголовки:
  • Server: nginx/1.2.0
  • Date: Fri, 27 Feb 2015 03:40:24 GMT
  • Content-Type: text/html; charset=utf-8
  • Transfer-Encoding: chunked
  • Connection: keep-alive
  • Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
  • Expires: Thu, 19 Nov 1981 08:52:00 GMT
  • X-Powered-By: PHP/5.3.13
  • Set-Cookie: PHPSESSID=55042e8e54f9bb5011813eda4548cd44; path=/; HttpOnly
  • Set-Cookie: language=ru; expires=Sun, 29-Mar-2015 03:40:21 GMT; path=/; domain=sanan-cctv.ru
  • Set-Cookie: currency=RUB; expires=Sun, 29-Mar-2015 03:40:21 GMT; path=/; domain=sanan-cctv.ru
  • Set-Cookie: language=ru; expires=Sun, 29-Mar-2015 03:40:21 GMT; path=/; domain=sanan-cctv.ru
  • Pragma: no-cache

 

 

При первичной загрузке создаются файлы сжатых и объединенных скриптов (от 5 до 10 секунд), которые используются на странице, при последующих загрузках будут использоваться уже созданные файлы. 

Надіслати
Поділитися на інших сайтах

Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз

×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.