Jump to content

Recommended Posts

Постановка задачи:

оптимизировать клиентскую часть, для сайта с несколькими сотнями товаров, с использованием мультиязычности и SEO (генерация страницы не более 0,2с).

В качестве пациента для экспериментов был взят OpenCart 1.5.5.1 с дефолтной базой.

Для поиска узких мест начнём с профилирования, анализируем результаты загрузки главной страницы (в листинге и карточке товара получаются аналогичные результаты):

Image.png

Как и ожидалось, почти половину времени тратиться на запросы к БД, вот и займемся этой частью, не будем экономить на спичках.

Простеньким скриптом собираем массив с данными выполнения запросов для анализа (ключами являются методы функций из которых делался запрос к БД, значениями кол-во таких запросов).

Image%20%5B1%5D.png

Видим, что точек вызова не так уж много - 15, но это не одинаковые запросы, для большинства повторений SQL код разный.

Править php код и SQL запросы, заниматься денормализацией БД не интересно, хочется более кастомного и простого решения с использованием кэша.

Основная проблема при его использовании - инвалидация, так:

по времени - сайт будет тормозить в момент обновления кэша

по событию - много правок в коде надо делать, не подходит...

зависимости? - легче движок переписать :)

Попробуем схитрить, записи в хэш таблице обновлять порциями не более N штук, по факту просмотра страницы, тем самым рассредоточив нагрузку. Время жизни тоже можно сделать разным, для разных типов данных (классифицируем по имени метода функции).

Хочется еще сократить кол-во запросов при обращение к кэшу, тэгирование излишне для нашей задачи, будем просто объединять в группы. Например: настройки, курсы валют, единицы измерения - то что от страницы к странице одинаково грузить пачкой, товары будут браться из кэша отдельно.

Приступаем к реализации идеи, кэш будем хранить в БД, для возможности реализации "хитростей", файлы не подойдут. Хэш таблица не станет узким местом, запросы по уникальному ключу будут быстрые, главное их кол-во сократить к минимуму.

Дальше кодим и получаем вот такой результат (время/количество запросов):

2013-03-17_2335.png

Может еще можно что то глобально ускорить? повторный профайл:

2013-03-18_1014.png

запросы к БД уступили лавру первенства, теперь нет особо нагруженных частей... закончили.

Результат устраивает, довольно потираем руки :).

Выводы:

Данное решение позволяет в 4-7 раз увеличить производительность сайта! Можно ещё экспериментировать с настройкой групп, времени жизни и размером порций обновления кэша (N).

Файлы выкладываю на gist.

Приветствуется конструктивная критика, пожелания и замечания.

Полезные ссылки по теме:

- клиентская оптимизация OpenCart

- Отладчик для OpenCart

- профилирование PHP кода

- Кеширование на клиенте и на сервере (ШРИ в Москве 2012)

Желаю всем быстрых сайтов!

Edited by kikasso
  • +1 5

Share this post


Link to post
Share on other sites

Вы кажется забыли подключить файл статик.пхп

require_once(DIR_SYSTEM . 'library/static.php');

И еще забыли закрыть тег пхп в \system\library\static.php

И еще забыли в запросе к бд учесть, что не у всех префикс к базе - ос_

Но в итоге у меня все равно не заработало :-)

Notice: unserialize() [function.unserialize]: Error at offset 65531 of 65535 bytes in Z:\home\localhost\ocstore1521\system\database\mysql.php on line 95

Notice: Trying to get property of non-object in Z:\home\localhost\ocstore1521\index.php on line 70

Warning: Invalid argument supplied for foreach() in Z:\home\localhost\ocstore1521\index.php on line 70

Возможно дело в версии, хотя вообще странно, что вы взяли ту версию (1551), которую здесь почти никто не использует.

Share this post


Link to post
Share on other sites

Вы кажется забыли подключить файл статик.пхп

require_once(DIR_SYSTEM . 'library/static.php');

И еще забыли закрыть тег пхп в \system\library\static.php

И еще забыли в запросе к бд учесть, что не у всех префикс к базе - ос_

Но в итоге у меня все равно не заработало :-)

Возможно дело в версии, хотя вообще странно, что вы взяли ту версию (1551), которую здесь почти никто не использует.

выложенные файлы, не претендуют на пошаговую инструкцию :) (в выложенных файлах добавил комментарий в качестве памятки)

тег <?php не закрываю по привычке, сейчас это уже общепризнанный стандарт раздел PSR-1

OpenCart 1.5.5.1 - т.к. выбрал его для своего проекта, лучше всего подходил по требованиям из коробки

а какая у вас версия? в хэш таблицу что нибудь пишется?

Share this post


Link to post
Share on other sites

1521

в таблице данные есть, с виду там все корректно, но на сайте кроме этих предупреждений перестали работать практически все модули, пропали картинки, пропал блок категорий, пропал фильтрпро, зато дебаггер показывает реальное уменьшение запросов до 1-2)

PS Поставил на 1541, завелось почти сразу, но заметил интересный баг - у меня там чистая сборка, и после добавления изменений из темы, перестали сохранятся настройки, т.е. ВООБЩЕ любые настройки, внесенные в админку, не сохраняются после нажатия кнопки сохранить. Если дропнуть таблицу кеша, то настройки начинают сохранятся. Такие дела :)

PPS Еще в админке нужно подключить static.php

Share this post


Link to post
Share on other sites

Вот и баги полезли)) Спасибо за помощь!

Проблему решаем отключением кэша для админки для этого:

- в файл \admin\config.php добавить строчку - define('IS_ADMIN', true);

- код формирования кэша обернуть в условие

if(!defined('IS_ADMIN')){
...
}

файлы на гист обновил

Share this post


Link to post
Share on other sites

Посмотрел 4 страницы категории по 15 товаров (всего 60) - размер таблицы кеша увеличился до 316 кб, не сильно ли жирно это? У меня в магазине скоро будет 30К товаров, таблица соответственно перевалит за сотню мб, правильно? БД не упадет с такими размерами таблиц?)

Share this post


Link to post
Share on other sites

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

установкой в массиве конфигруции значения expire = false, это еще пригодится и для данных, которые по определению не нужно кэшировать.

Для грубой отладки, можно использовать в mysql.php две строчки

var_dump($method. ' ('. $caller[2]['line']. ')'); //вывод места откуда вызывается запрос
var_dump($sql);//текст запроса

Share this post


Link to post
Share on other sites

Посмотрел 4 страницы категории по 15 товаров (всего 60) - размер таблицы кеша увеличился до 316 кб, не сильно ли жирно это? У меня в магазине скоро будет 30К товаров, таблица соответственно перевалит за сотню мб, правильно? БД не упадет с такими размерами таблиц?)

решение делалось для сотен товаров, надо тестировать, можно попробовать настроить кэш только на ресурсоемкие запросы...

Share this post


Link to post
Share on other sites

Посмотрел 4 страницы категории по 15 товаров (всего 60) - размер таблицы кеша увеличился до 316 кб, не сильно ли жирно это? У меня в магазине скоро будет 30К товаров, таблица соответственно перевалит за сотню мб, правильно? БД не упадет с такими размерами таблиц?)

решение делалось для сотен товаров, надо тестировать, можно попробовать настроить кэш только на ресурсоемкие запросы...

Здравствуйте, каким образом настроить кеширование только емких запросов?

Share this post


Link to post
Share on other sites

Интересует такой вопрос. Почему если отключить method, то кеш все равно пишется в БД? По логике вещей ведь кешировать нужно только то что разрешено. И хотелось бы понять причину по которой данное решение не совместимо с некоторыми дополнениями.

Share this post


Link to post
Share on other sites

к серверной оптимизации так же можно отнести, настройку HTTP заголовков Last-Modified и If-Modified-Since, это позволит снизить нагрузку на сервер и упростит жизнь поисковым ботам (ускорит индексацию). Подробнее что это такое и как готовить, уже обсуждалось на форуме

Share this post


Link to post
Share on other sites

kikasso, большое спасибо! Молодец, на maxystore 1.5.5.1 с товаром +/- 2тыс ускорение в 4 раза точно!!! 

Share this post


Link to post
Share on other sites

Решение кончено имеет право на жизнь, только в MySQL уже есть кэширование

И неразумно писать PHP-костыли, когда есть нативные вещи, которые работают эффективнее. И скорее всего уже защищено от тормозов при устаревании кэша. Надо лишь настроить сервер.

 

SQL-кэш к стати куда быстрее файлового работает, так как в нем заключена вся мощь СУБД.

  • +1 2

Share this post


Link to post
Share on other sites

Решение кончено имеет право на жизнь, только в MySQL уже есть кэширование

И неразумно писать PHP-костыли, когда есть нативные вещи, которые работают эффективнее. И скорее всего уже защищено от тормозов при устаревании кэша. Надо лишь настроить сервер.

 

SQL-кэш к стати куда быстрее файлового работает, так как в нем заключена вся мощь СУБД.

 

Если вы свою теорию проверите на практике, поделитесь успехами - интересно как можно обойти кэширование запросов, например, содержимого корзины...? и ведь если выполнялось пол тысячи запросов к БД при обращении к странице, так пол тысячи выполняться и будет при включено MySQL кэше... да быстрее, но вопрос на сколько? поэтому очень интересна обоснованность фразы "неразумно писать PHP-костыли, когда есть нативные вещи, которые работают эффективнее"

 

Еще я бы фразу  Надо лишь настроить сервер - выделил жирным и перекрасил в красный цвет, т.к. для большинства актуально использование виртуального хостинга, что и у меня было в исходных данных к заданию, а это требование отсекает ваш теоретический вариант с MySQL кэшем.

 

За ссылку  на информацию по MySQL кэшу спасибо, первый раз слышу, никогда не использовал!

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

А давайте вы произведете замеры. Пожалуй так будет справедливо. Тем более, что у вам прекрасные инструменты. Изменения описанные в статье внесены в актуальную сборку ocStore в оригинальном OpenCart их нет. OpenCart vs OcStore. Самому интересно в конкретных цифрах.

  • +1 1

Share this post


Link to post
Share on other sites

А давайте вы произведете замеры. Пожалуй так будет справедливо. Тем более, что у вам прекрасные инструменты. Изменения описанные в статье внесены в актуальную сборку ocStore в оригинальном OpenCart их нет. OpenCart vs OcStore. Самому интересно в конкретных цифрах.

 

произведу, только если вы обоснуете фразу "неразумно писать PHP-костыли, когда есть нативные вещи, которые работают эффективнее", говоря что с встроенным кэшем в MySQL будет работать быстрее

вы со мной делитесь интересующей меня информацией, я вам помогаю с интересующими цифрами по производительности - вот так справедливо:)

Share this post


Link to post
Share on other sites

произведу, только если вы обоснуете фразу "неразумно писать PHP-костыли, когда есть нативные вещи, которые работают эффективнее", говоря что с встроенным кэшем в MySQL будет работать быстрее

вы со мной делитесь интересующей меня информацией, я вам помогаю с интересующими цифрами по производительности - вот так справедливо :)

Одна из причин в том, что кэш MySQL располагается преимущественно в памяти, а не в файлах, таблицах и т.п.

Использование Memcached будет не хуже, но сам Memcached занимает место в памяти, да и для общения с ним нужно выполнять дополнительные вычисления/преобразования данных. Что хранить в кэше, а что нет, MySQL определяет не только по времени устаревания кэша. Там учитывается и частота запросов, и трудоемкость. Таким образом MySQL хранит в кэше то, что оптимально там хранить, а не самое свежее.

Минус SQL-кэша в том, что запросы с NOW(), CURRENT_TIMESTAMP() и т.д. не кэшируются, UPDATE INSERT таблицы стирает связанный с таблицей кэш. Также ключ кэша формируются на основании всего запроса. И два запроса, отличающиеся на пробел MySQL посчитает разными и результаты второго из кэша не возьмет.

При помощи PHP можно обогнать MySQL-кэш, но для этого надо ключ делать не просто md5($sql), а что-то похитрее. Ну и кэшировать самые тяжелые и частые запросы.

Share this post


Link to post
Share on other sites

 

Также можно загружать данные не в цикле, а одним запросом. Нужно сначала собрать массив найденных product_id, а потом в запросе использовать условие p.product_id IN(...).

Оказалось что лучше 20 запросов на каждый товар нежели один.

Суммарное время выполнения по очереди 20 getProduct оказалось почти в 5 раз быстрее чем один запрос с p.product_id IN(...).

  • +1 2

Share this post


Link to post
Share on other sites

Оказалось что лучше 20 запросов на каждый товар нежели один.

Суммарное время выполнения по очереди 20 getProduct оказалось почти в 5 раз быстрее чем один запрос с p.product_id IN(...).

Полностью согласен. Я был удивлен, когда узнал, что p.product_id IN(...) не использует индексы.

В ocStore IN не используется.

  • +1 2

Share this post


Link to post
Share on other sites

ну что значит оказалось?

оказалось на вашей базе и вашей конфигурации. только и всего

Share this post


Link to post
Share on other sites

вылез баг с описанием, нету описания для товара по всему сайту

Share this post


Link to post
Share on other sites

Одна из причин в том, что кэш MySQL располагается преимущественно в памяти, а не в файлах, таблицах и т.п.

Использование Memcached будет не хуже, но сам Memcached занимает место в памяти, да и для общения с ним нужно выполнять дополнительные вычисления/преобразования данных. Что хранить в кэше, а что нет, MySQL определяет не только по времени устаревания кэша. Там учитывается и частота запросов, и трудоемкость. Таким образом MySQL хранит в кэше то, что оптимально там хранить, а не самое свежее.

Минус SQL-кэша в том, что запросы с NOW(), CURRENT_TIMESTAMP() и т.д. не кэшируются, UPDATE INSERT таблицы стирает связанный с таблицей кэш. Также ключ кэша формируются на основании всего запроса. И два запроса, отличающиеся на пробел MySQL посчитает разными и результаты второго из кэша не возьмет.

При помощи PHP можно обогнать MySQL-кэш, но для этого надо ключ делать не просто md5($sql), а что-то похитрее. Ну и кэшировать самые тяжелые и частые запросы.

 

Из этих рассуждений вы строите свои доводы? Не убедительно!

Как можно говорить об эффективности оптимизации не делая замеры?

Я хочу знать на сколько эффективнее вариант с MySQL кэшем, предложенный вами,  моего костыля? Вы сами пробовали использовать MySQL кэш для OpneCart? Вам не кажется что узким местом является количество запросов, а не их тяжесть? Вопрос остался открыт.

  • +1 1

Share this post


Link to post
Share on other sites

Из этих рассуждений вы строите свои доводы? Не убедительно!

более того, помимо замеров должны нужно предоставить сами данные что бы у каждого была возможность проверить на своей конфигурации

  • +1 2

Share this post


Link to post
Share on other sites

Мы пишем модули, пытаемся писать их оптимально, ориентируясь на некий сферический магазин в вакууме.
Конкретные базы серверы и т.д. оказываются тоже оторванными от реальности. Что касается предоставить данные, так я вам верю, чего вас проверять?
 
Конечно всегда много если: нельзя под себя настраивать MySQL, нельзя установить Memcache или Sphinx, объем памяти, диска.
Любое решение может подходить или не подходить. Я просто против велосипедов, которые вводят в заблуждение.
Вот это например что за решение? https://github.com/shaman/opencart-mysql-cache


kikasso, я писал: Что хранить в кэше, а что нет, MySQL определяет не только по времени устаревания кэша. Там учитывается и частота запросов, и трудоемкость.

 

Ваше решение прекрасно, великолепно, грандиозно, оно работает лучше всех, проверено на практике. Давайте остановимся на этом. У меня нет охоты спорить чье кунг-фу лучше. Я верю, что в комманде MySQL тоже не дураки.

  • +1 1

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
You are posting as a guest. If you have an account, please sign in.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

  • Similar Content

    • By Sha
      Инструмент, который поможет ускорить мобильную версию OpenCart!
       
      Как сделать шаблон адаптивным? на мобильной версии скрыть "лишние" элементы.
      Нужно, что-бы при этом не пострадало usability? переместить модули и виджеты на другие позиции.
       
      Даже топовые шаблоны, поступают именно таким образом, элементы которые "не нужны" или наоборот необходимы только в мобильной версии: либо скрываются посредством css (display:none); либо перемещаются, хорошо если flexbox или bootstrap pull push но часто с помощью навешивания множества слушателей событий javascript. Даже адаптивность bootstrap основана на таких принципах.
      Всё это создаёт лишний "вес" и нагрузку, что конечно же замедляет работу сайта и заставляет процессор пользователя работать с повышенной нагрузкой шумя как майнинг ферма.
      Мы в наших продуктах пропагандируем использовать только то, что необходимо сейчас. И исходя из этих принципов нами был разработан
       
      модуль Мобильные схемы который поможет:
      уменьшить объём страницы (предотвратить чрезмерную нагрузку на сеть),  сократить размер структуры DOM, ускорить время окончания работы ЦП, избавится от лишнего JavaScript кода (сократить время выполнения кода JavaScript), избавится от css костылей,       а так-же:
      Устранить ресурсы, блокирующие отображение, Сократить время ответа сервера (время до получения первого байта, TTFB), Использовать подходящий размер изображений,  
           и др.
           при этом даже улучшив
       
      адаптивность, гибкость в настройке и дружелюбность Вашего сайта!  
       
      Поддерживает встроенные схемы популярных модулей, например поддерживает SEOCMS.
       
      Бесплатно модуль получить можно вместе с шаблоном Roundshop.
       
      данная версия поддерживает OpenCart 2.1.x, 2.2.x, 2.3.x, ocStore 2.1.x, 2.2.x, 2.3.x
      версию для Opencart 3.x, ocStore 3.x можно скачать здесь!
       
      Техническая поддержка
      доступна пользователям из списка покупателей и только после прочтения faq:
      Если вы обращаетесь с просьбой разобраться в проблеме, то для экономии времени укажите:
      адрес сайта доступ в админ-панель доступ на FTP-сервер  
      По любым вопросам вы можете связаться с нами через:
      Личные сообщения на форуме; Режим работы с 10-00 до 18-00 по киевскому времени за исключением выходных и праздничных дней.
       
       
    • By Sha
      300.00 руб
      Скачать/Купить дополнение


      Layout Type, ускорение мобильной версии.
      Инструмент, который поможет ускорить мобильную версию OpenCart!
       
      Как сделать шаблон адаптивным? на мобильной версии скрыть "лишние" элементы.
      Нужно, что-бы при этом не пострадало usability? переместить модули и виджеты на другие позиции.
       
      Даже топовые шаблоны, поступают именно таким образом, элементы которые "не нужны" или наоборот необходимы только в мобильной версии: либо скрываются посредством css (display:none); либо перемещаются, хорошо если flexbox или bootstrap pull push но часто с помощью навешивания множества слушателей событий javascript. Даже адаптивность bootstrap основана на таких принципах.
      Всё это создаёт лишний "вес" и нагрузку, что конечно же замедляет работу сайта и заставляет процессор пользователя работать с повышенной нагрузкой шумя как майнинг ферма.
      Мы в наших продуктах пропагандируем использовать только то, что необходимо сейчас. И исходя из этих принципов нами был разработан
       
      модуль Мобильные схемы который поможет:
      уменьшить объём страницы (предотвратить чрезмерную нагрузку на сеть),  сократить размер структуры DOM, ускорить время окончания работы ЦП, избавится от лишнего JavaScript кода (сократить время выполнения кода JavaScript), избавится от css костылей,       а так-же:
      Устранить ресурсы, блокирующие отображение, Сократить время ответа сервера (время до получения первого байта, TTFB), Использовать подходящий размер изображений,  
           и др.
           при этом даже улучшив
       
      адаптивность, гибкость в настройке и дружелюбность Вашего сайта!  
       
      Поддерживает встроенные схемы популярных модулей, например поддерживает SEOCMS.
       
      Бесплатно модуль получить можно вместе с шаблоном Roundshop.
       
      данная версия поддерживает OpenCart 2.1.x, 2.2.x, 2.3.x, ocStore 2.1.x, 2.2.x, 2.3.x
      версию для Opencart 3.x, ocStore 3.x можно скачать здесь!
       
      Техническая поддержка
      доступна пользователям из списка покупателей и только после прочтения faq:
      Если вы обращаетесь с просьбой разобраться в проблеме, то для экономии времени укажите:
      адрес сайта доступ в админ-панель доступ на FTP-сервер  
      По любым вопросам вы можете связаться с нами через:
      Личные сообщения на форуме; Режим работы с 10-00 до 18-00 по киевскому времени за исключением выходных и праздничных дней.
       
       
      Добавил Sha Добавлено 13.03.2018 Категория Кэширование, сжатие, ускорение Системные требования Метод активации Автоматическая активация Ioncube Loader Нет OpenCart 2.3
      2.2
      2.1 ocStore 2.3
      2.2
      2.1 OpenCart.Pro, ocShop Opencart.pro 2.3
      Opencart.pro 2.1
      OcShop 2.0.3.х Обращение к серверу разработчика Нет Старая цена 0  
    • By halfhope
      В стоимость модуля входят исходные файлы скрипта MCJ, xml файлы vqmod, файлы административной панели, инструкция по установке модуля. Все остальные компоненты распространяются по разным лицензиям и находятся в открытом доступе. Покупается одним клиентом на один сайт(магазин/мультимагазин). Есть урезанная бесплатная версия этого модуля, называется она MCLite.
      Возможности
      Автоматическая минимизация/объединение/сжатие
      Автоматическое сжатие только тех CSS/JS, которые используются на странице
      Оригинальные файлы остаются нетронутыми
      Имеется функция сжатия HTML (на лету, без кэширования)
      Выбор минимизатора для каждого типа контента (CSS/JS/HTML)
      Возможность отправлять already gzipped файлы (файлы заранее упакованы)
      Возможность использовать Domain CDN (зеркала сайта) для (CSS/JS/HTML) (опционально)
      Оптимизация Базы Данных одним кликом (как в PHPMyAdmin)
      Возможность исключить определенные файлы из обработки/объединения/минимизации
      Несколько режимов объединения файлов (в один файл/группой в папках/не объединять)
      Вставка base64 изображения в CSS (Храните мелкие картинки в CSS)
      Возможность перенести весь JavaScript код в конец страницы. (Статья)
      При использовании модифицированного smartoptimizer отправляются все необходимые для кэширования заголовки вне зависимости от сервера.
      Удобный менеджер кэша со статистикой сжатия
      Поддерживаемые минимизаторы
      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]
      JavaScript: [JsMinPlus] Tino Zijdel <[email protected]> [Google Clousure Compiler (Curl)] Google Developers [JShrink] Robert Hafner <[email protected]> [JavaScriptPacker] Dean Edwards <[email protected]>
      Результаты качества сжатия минимизаторов можете посмотреть здесь http://halfhope.ru/tmp/mcj_tests/. Провести тесты работоспособности всех минимизаторов на своем сервере можно с помощью server_compatibility_test.zip.

      Поддерживаемые CMS OpenCart версий: 1.5.x.x
      Демо http://mcj.halfhope.ru/ - Каталог http://mcj.halfhope.ru/admin - Панель администрарования (логин, пароль уже введены)
      Системные требования
      Для тестирования совместимости с Вашим сервером скачайте и распакуйте архив server_compatibility_test.zip. Он проведет тестирование минимизаторов mcj с Вашим сервером и покажет, какие модули (библиотеки сжатия) будут работать, а какие нет. PHP >= 5.0. Не страшно, если не работает один из минимизаторов, для этого добавлены другие.

      Установка/обновление
    • By halfhope
      550.00 руб · Срок продления: 300.00 руб за 6 месяцев
      Скачать/Купить дополнение


      MCJ - Автоматическое объединение и сжатие CSS, JS + smartoptimizer
      В стоимость модуля входят исходные файлы скрипта MCJ, xml файлы vqmod, файлы административной панели, инструкция по установке модуля. Все остальные компоненты распространяются по разным лицензиям и находятся в открытом доступе. Покупается одним клиентом на один сайт(магазин/мультимагазин). Есть урезанная бесплатная версия этого модуля, называется она MCLite.
      Возможности
      Автоматическая минимизация/объединение/сжатие
      Автоматическое сжатие только тех CSS/JS, которые используются на странице
      Оригинальные файлы остаются нетронутыми
      Имеется функция сжатия HTML (на лету, без кэширования)
      Выбор минимизатора для каждого типа контента (CSS/JS/HTML)
      Возможность отправлять already gzipped файлы (файлы заранее упакованы)
      Возможность использовать Domain CDN (зеркала сайта) для (CSS/JS/HTML) (опционально)
      Оптимизация Базы Данных одним кликом (как в PHPMyAdmin)
      Возможность исключить определенные файлы из обработки/объединения/минимизации
      Несколько режимов объединения файлов (в один файл/группой в папках/не объединять)
      Вставка base64 изображения в CSS (Храните мелкие картинки в CSS)
      Возможность перенести весь JavaScript код в конец страницы. (Статья)
      При использовании модифицированного smartoptimizer отправляются все необходимые для кэширования заголовки вне зависимости от сервера.
      Удобный менеджер кэша со статистикой сжатия
      Поддерживаемые минимизаторы
      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]
      JavaScript: [JsMinPlus] Tino Zijdel <[email protected]> [Google Clousure Compiler (Curl)] Google Developers [JShrink] Robert Hafner <[email protected]> [JavaScriptPacker] Dean Edwards <[email protected]l.com>
      Результаты качества сжатия минимизаторов можете посмотреть здесь http://halfhope.ru/tmp/mcj_tests/. Провести тесты работоспособности всех минимизаторов на своем сервере можно с помощью server_compatibility_test.zip.

      Поддерживаемые CMS OpenCart версий: 1.5.x.x
      Демо http://mcj.halfhope.ru/ - Каталог http://mcj.halfhope.ru/admin - Панель администрарования (логин, пароль уже введены)
      Системные требования
      Для тестирования совместимости с Вашим сервером скачайте и распакуйте архив server_compatibility_test.zip. Он проведет тестирование минимизаторов mcj с Вашим сервером и покажет, какие модули (библиотеки сжатия) будут работать, а какие нет. PHP >= 5.0. Не страшно, если не работает один из минимизаторов, для этого добавлены другие.

      Установка/обновление
      Добавил halfhope Добавлено 26.08.2013 Категория Кэширование, сжатие, ускорение Системные требования Метод активации Без активации Ioncube Loader Нет OpenCart 2.2 ocStore 2.3 OpenCart.Pro, ocShop Opencart.pro 2.1 Обращение к серверу разработчика Нет Старая цена 0  
    • By sitecreator
      УСЛУГА (работа):
      Оптимизация сайта на опенкарт 1.5, 2.* и 3.0
      В состав работ входит установка и настройка необходимого софта, включая разработки для оптимизации (модули) от
      @sitecreator
      Никакой код вашего сайта не правится без возможности отката изменений. Это гарантия того, что в случае любых сомнений (или просто ради теста) вы можете отключить оптимизированную версию сайта и вернуться к первоначальной.
       
      Разработчик уверен в результате и может предложить вам оптимизацию до ее оплаты с пробным периодом в 7 дней. Предложение может быть ограничено ввиду временного отсутствия свободного времени.
       
      тестовый сайт:
      https://hi-optimizer.sitecreator.pro/
      схема дефолтная, но с виджетами, счетчиками, картой, видео-вставкой.
      проверка показателей pagespeed для данного сайта:
      https://developers.google.com/speed/pagespeed/insights/?url=https%3A%2F%2Fhi-optimizer.sitecreator.pro%2F
       
      При отсутствии оптимизации данный сайт оценивается гуглом в 28 баллов. После оптимизации - 98...99 баллов для мобильных.
      Это не означает, что любой сайт можно вывести в зону 90+ баллов при малом бюджете (как в данной услуге). Но существенно поднять оценку можно.
      Вы можете заметить, что в списке моих работ  не все сайты достигли уровня в 90+ баллов.
       
       
      Работа производится с применением профессионального инструмента оптимизатора (Hi-Optimizer by SiteCreator):
       

       
       
      На сайте оптимизируются (список не является исчерпывающим):
       
      стили (CSS) скрипты (JavaScript) объединение, минификация CSS и т.п. откладывание выполнения JavaScript с малым приоритетом задание приоритета выполнения автоматически или в ручном режиме возможность асинхронной загрузки как определенных CSS, так и JavaScript оптимизация всевозможных метрик (Яндекс и др.), аналитик (Гугл, Фейсбук и др.)  (по желанию и при необходимости) оптимизация всевозможных виджетов (Яндекс, Фейсбук, В Контакте и др. ) виджеты могут загружаться при попадении их в зону просмотра (lazy load для виджетов) оптимизация всевозможных чатов (Jivosite, Яндекс и т.д) оптимизация карт Гугла и Яндекса (загружаются при попадении в зону видимости - lazy load для карт), и др. карт оптимизация загрузки фреймов (iframe) оптимизация видео-вставок Ютюб, youtube.com оптимизация загрузки и отображения шрифтов, причем, как из внешних источников, так и из CSS, загружаемых с вашего сайта отслеживание дублей CSS, JS и, соответственно, предотвращение их повторной загрузки оптимизация загрузки всевозможных Lightbox (magnific-popup, colorbox, fancybox) другое по необходимости (определяется на основе анализа сайта)  
      Поскольку сперва производится анализ сайта, то невозможно до завершения анализа сайта перечислить все необходимые действия по оптимизации конкретного сайта. Работы по оптимизации производятся с учетом конкретных особенностей сайта. К каждому сайту  - индивидуальный подход!
       
      Работа проводится без изменения кода сайта с применением технологии ocmod.  Вы в любой момент можете откатить любые изменения. Даже после обновления шаблона на новую версию результат оптимизации сохраняется почти всегда, но может потребоваться иногда небольшая настройка. Т.е. обычно в таких случаях не нужно заново с нуля проводить оптимизацию. В этом большое преимущество данного подхода к оптимизации - он максимально гибкий и с хорошей переносимостью кода.  Включить или выключить оптимизацию кода на сайте вы можете одной кнопкой.
       

       
      На дефолтном движке и дефолтной теме для мобильных такой результат можете получить как на скриншоте ниже. На других сайтах общий результат также будет зависеть от оптимизации скорости отдачи самой страницы и оптимизации изображений.
       
       
      Результат гарантируется!
       
      Оптимизация отклика сервера и скорости генерации сервером страниц (отдаваемый HTML) не входит в данную услугу. По оптимизации серверной части пользуйтесь другими услугами.
      Как правило, отклик страницы в 1 сек или быстрее не сильно влияет на возможность достижения высоких баллов по оценке Гугла. Т.е. в настоящее время гугл придает наибольшее значение в своей оценке именно оптимизации скриптов JavaScript, CSS, и меньше придает значение скорости отклика сервера, но все в разумных пределах, разумеется.
       
      Для разработчиков, оптимизаторов и др. девелоперов возможна индивидуальная скидка до 50%  от начальной стоимости. Да и просто тем, кто заказывает 2-й раз данную услугу также могу предложить скидку.
      За купоном на скидку, пожалуйста, обращайтесь в личку или на почту [email protected]
       

       
       
      Для работы используется профессиональный инструмент:
       
       
      Модуль Hi-Optimizer не является панацеей для всех случаев.  Бывают крайне неудачно сделанные сайты (соответственно с оценкой гугла близкой к нулю),  которые без серьезной переделки невозможно оптимизировать, а это только ручная работа с версткой, кодом и т.д. Предлагаю сперва (до заказа услуги или покупки модуля) консультироваться с исполнителем и делать предварительный анализ и прогноз на предмет возможной успешной оптимизации конкретного сайта.
       
       

       
       
       
      Реальные сайты, на которых производилась оптимизация:
       

       

       

       

       

       
  • Recently Browsing   0 members

    No registered users viewing this page.

×

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.