DaVinci Опубликовано 1 февраля, 2018 Жалоба Поделиться Опубликовано 1 февраля, 2018 (изменено) если я правильно понял смысл вашего велосипеда, чисто теоретически, есть вероятность что два пользователя с минимальной задержкой зашли на сайт и один из них получит не целый файл? Изменено 1 февраля, 2018 пользователем DaVinci Цитата Ссылка на сообщение Поделиться на другие сайты
DaVinci Опубликовано 1 февраля, 2018 Жалоба Поделиться Опубликовано 1 февраля, 2018 все, вижу, вы вообще не сохраняете результат в файл - все стили собираются в одном запросе. ну это ведь жесть)) Цитата Ссылка на сообщение Поделиться на другие сайты
DaVinci Опубликовано 1 февраля, 2018 Жалоба Поделиться Опубликовано 1 февраля, 2018 (изменено) в ваше случае хуже уже не будет потому можно просто смотреть на время изменения файлов и формировать хеш, если хеши не равны то прогоняем файлы и сохраняем результат, возможно в это случае экономия времени будет Изменено 1 февраля, 2018 пользователем DaVinci Цитата Ссылка на сообщение Поделиться на другие сайты
a13x Опубликовано 1 февраля, 2018 Жалоба Поделиться Опубликовано 1 февраля, 2018 все, вижу, вы вообще не сохраняете результат в файл - все стили собираются в одном запросе. ну это ведь жесть)) Жесть с точки зрения читаемости кода, с точки зрения построения сайта вполне хорошо. Все стили в своих файлах.Можно заморочиться с хэшем, но я не вижу смысла, это совсем мало что изменит. если я правильно понял смысл вашего велосипеда, чисто теоретически, есть вероятность что два пользователя с минимальной задержкой зашли на сайт и один из них получит не целый файл? Не думаю, каждый получит полноценный файл. Цитата Ссылка на сообщение Поделиться на другие сайты
yr4ik Опубликовано 1 февраля, 2018 Автор Жалоба Поделиться Опубликовано 1 февраля, 2018 Почему? у вас этот ксс файл лежит там же откуда и идёт импортирование, имя файла есть, так почему ему не подключиться? потому что склеенный файл будет примерно иметь вид: содержимое general.css содержимое libs.css содержимое animate.css содержимое adaptive.css с строкой @import так вот тут import просто будет ошибкой, а не импортируемыми стилями. Потому что он будет работать только если окажется перед содержимым general.css. И это вполне критично! нельзя импортировать не гугл фонтс не другие css. Тут можно только опять править исходный css путем перемещения кода по файлам или прописями их в php. Цитата Ссылка на сообщение Поделиться на другие сайты
a13x Опубликовано 1 февраля, 2018 Жалоба Поделиться Опубликовано 1 февраля, 2018 так вот тут import просто будет ошибкой, а не импортируемыми стилями. Потому что он будет работать только если окажется перед содержимым general.css. И это вполне критично! нельзя импортировать не гугл фонтс не другие css. Тут можно только опять править исходный css путем перемещения кода по файлам или прописями их в php. Да, согласен. Я просто в 99.9% не использую import в ксс поэтому не знал про тонкость что его надо подключать только в начале объявления таблицы стилей. Цитата Ссылка на сообщение Поделиться на другие сайты
DaVinci Опубликовано 1 февраля, 2018 Жалоба Поделиться Опубликовано 1 февраля, 2018 (изменено) все, вижу, вы вообще не сохраняете результат в файл - все стили собираются в одном запросе. ну это ведь жесть)) Жесть с точки зрения читаемости кода, с точки зрения построения сайта вполне хорошо. Все стили в своих файлах.Можно заморочиться с хэшем, но я не вижу смысла, это совсем мало что изменит. если я правильно понял смысл вашего велосипеда, чисто теоретически, есть вероятность что два пользователя с минимальной задержкой зашли на сайт и один из них получит не целый файл? Не думаю, каждый получит полноценный файл. с точки зрения кода там все нормально. посмотрите скорость загрузки вашего файла при живой генерации и отдачу того же файла статично, ну почему то я уверен что разница будет глобальной Изменено 1 февраля, 2018 пользователем DaVinci Цитата Ссылка на сообщение Поделиться на другие сайты
a13x Опубликовано 1 февраля, 2018 Жалоба Поделиться Опубликовано 1 февраля, 2018 (изменено) с точки зрения кода там все нормально. посмотрите скорость загрузки вашего файла при живой генерации и отдачу того же файла статично, ну почему то я уверен что разница будет глобальной Время генерации файла: 0.034197092056274Берем что время отдачи статики = 0, то получаем что разница 0.03 сек.Среднее значение от 0.033 до 0.035 при обновлении по CTRL+F5 (сброс кэша) Изменено 1 февраля, 2018 пользователем a13x Цитата Ссылка на сообщение Поделиться на другие сайты
yr4ik Опубликовано 1 февраля, 2018 Автор Жалоба Поделиться Опубликовано 1 февраля, 2018 с точки зрения кода там все нормально. посмотрите скорость загрузки вашего файла при живой генерации и отдачу того же файла статично, ну почему то я уверен что разница будет глобальной Время генерации файла: 0.034197092056274Берем что время отдачи статики = 0, то получаем что разница 0.03 сек.Среднее значение от 0.033 до 0.035 при обновлении по CTRL+F5 (сброс кэша) а в чем тогда плюсы по сравнению с моим методом?Ни в скорости ни в удобстве (ведь нужна постоянная адаптации css файлов и определенные условия)? если есть негатив к vqmod - то я уже писал выше.Переделать не составит труда, а народу может так лучше будет. Появится интерес.То я много чего через vqmod делаю, поэтому особого желания на инструкцию переделывать - нет Цитата Ссылка на сообщение Поделиться на другие сайты
DaVinci Опубликовано 1 февраля, 2018 Жалоба Поделиться Опубликовано 1 февраля, 2018 с точки зрения кода там все нормально. посмотрите скорость загрузки вашего файла при живой генерации и отдачу того же файла статично, ну почему то я уверен что разница будет глобальной Время генерации файла: 0.034197092056274Берем что время отдачи статики = 0, то получаем что разница 0.03 сек.Среднее значение от 0.033 до 0.035 при обновлении по CTRL+F5 (сброс кэша) если учесть что, к примеру, главная страница демо симплы генерируется за 0.04 то 0.03 только для css это очень критично http://prntscr.com/i8ul1z Цитата Ссылка на сообщение Поделиться на другие сайты
a13x Опубликовано 1 февраля, 2018 Жалоба Поделиться Опубликовано 1 февраля, 2018 (изменено) если учесть что, к примеру, главная страница демо симплы генерируется за 0.04 то 0.03 только для css это очень критично думаю у вас какой нить кривой запрос из базы что-то типа FIND_IN_SET будет дольше обрабатываться, чем чтение локального файла и я уже молчу про доп. запросы к css или js, которые по времени также обрабатываются. а в чем тогда плюсы по сравнению с моим методом? Для меня? В простоте, в скорости (не по сравнению с вашим т.к. тут одинаково будет), в удобстве. Для вас не знаю Вы написали свой автомобиль, он вам нравится, я написал свой велосипед и он мне нравится. Я лишь сказал что можно сделать всё тоже самое используя пару строк на пхп. Изменено 1 февраля, 2018 пользователем a13x Цитата Ссылка на сообщение Поделиться на другие сайты
yr4ik Опубликовано 1 февраля, 2018 Автор Жалоба Поделиться Опубликовано 1 февраля, 2018 если учесть что, к примеру, главная страница демо симплы генерируется за 0.04 то 0.03 только для css это очень критично думаю у вас какой нить кривой запрос из базы что-то типа FIND_IN_SET будет дольше обрабатываться, чем чтение локального файла и я уже молчу про доп. запросы к css или js, которые по времени также обрабатываются. а в чем тогда плюсы по сравнению с моим методом? Для меня? В простоте, в скорости (не по сравнению с вашим т.к. тут одинаково будет), в удобстве. Для вас не знаю Вы написали свой автомобиль, он вам нравится, я написал свой велосипед и он мне нравится. Я лишь сказал что можно сделать всё тоже самое используя пару строк на пхп. ну чего одинаково в скорости - если у меня отдается файл на прямую без php? В простоте - тоже спорю с вами. ведь вот весь код для вывода сss: {css id="libs" include=[ "design/{$settings->theme}/css/bootstrap.css", "design/{$settings->theme}/css/animate.css", "design/{$settings->theme}/css/style.css" ]}{/css} {stylesheet} Что бы добавить файл нужно добавить 1 строку в массив. И не нужны никакие адаптации css. Скрипт все сам сделает и import перенесет и путь к прикладным сменит. В размере файлов - у меня они тоже больше сожмутся. Ну в общем дело ваше. Делайте как вам удобней... Цитата Ссылка на сообщение Поделиться на другие сайты
a13x Опубликовано 2 февраля, 2018 Жалоба Поделиться Опубликовано 2 февраля, 2018 (изменено) Я с вами полностью согласен, но я например не хочу подключать в систему VQMOD т.к. он полюбому будет тормозить систему. Я уверен вы не замеряли скорость работы с ним и без него. Я на опенкарте с ним намучился и ставить его врагу не пожелаю.P.s. если бы ваш плагин работал без VQMOD, бесспорно это было бы лучшее решение! Изменено 2 февраля, 2018 пользователем a13x Цитата Ссылка на сообщение Поделиться на другие сайты
yr4ik Опубликовано 2 февраля, 2018 Автор Жалоба Поделиться Опубликовано 2 февраля, 2018 (изменено) Я с вами полностью согласен, но я например не хочу подключать в систему VQMOD т.к. он полюбому будет тормозить систему. Я уверен вы не замеряли скорость работы с ним и без него. Я на опенкарте с ним намучился и ставить его врагу не пожелаю.P.s. если бы ваш плагин работал без VQMOD, бесспорно это было бы лучшее решение!я вам предлагал переписать на не vqmod версию...Что касается замеров скорости - то ошибаетесь.Думаете я делал и не обращал внимание на скорость? чистая 2.3.7 версия чистая 2.3.7 + vqmod 2.8все версии без сторонних модулей главная страница: чистая симпла:http://joxi.ru/Vm6KoBkhx9Opy2?d=1 - 0.073 vqmod: http://joxi.ru/RmzBZGvtWzqexm?d=1 - генерация кэша vqmod (без smarty) 0.19http://joxi.ru/VrwydvpiKQpeP2?d=1 - повторная загрузка уже с кэшем 0.076 страница товара: чистая симпла:http://joxi.ru/52aXl6JiGRL7bm?d=1 - 0.09 vqmod: http://joxi.ru/EA4doBaiDzLEVA?d=1 - если генерируется кэш 0.16http://joxi.ru/n2YLx9Yij9Xzxm?d=1 - повторная загрузка 0.095 как видно по таймингам задержка примерно как на вашем css скрипте если есть желание - то можете сами погонятьhttp://demo.tmp.pp.ua/vqmod/adminadmin по опенкарту: simpla это совсем другой движок и другое количество файлов. И очень многое зависит от самих модулей. Если бы данный подход был так ужасен - то с чего бы его внедряли в основу opencart 2 (ocmod)? Что разработчики opencart настолько не дружат с головой? любая модульность будет излишней нагрузкой. Если разрабатывается огромный проект с 50к товаров и тд - то я бы не сильно советовал внедрять туда vqmod. Потому что с большими проектами каждая доля секунды на счету. Там и стандартная симпла имеет целую кучу недочетов что замедлит работу. Изменено 3 февраля, 2018 пользователем yr4ik Цитата Ссылка на сообщение Поделиться на другие сайты
yr4ik Опубликовано 6 сентября, 2018 Автор Жалоба Поделиться Опубликовано 6 сентября, 2018 (изменено) Версия 1.2 + добавлены новые параметры minify и combine в регистрацию js/css (работают при render=true)+ добавлена поддержка синтаксиса less. Активируется при регистрации с параметром less=true скачать и подробнее описание в шапке Также залил демонстративный шаблон на github Изменено 6 сентября, 2018 пользователем yr4ik Цитата Ссылка на сообщение Поделиться на другие сайты
yr4ik Опубликовано 12 сентября, 2018 Автор Жалоба Поделиться Опубликовано 12 сентября, 2018 (изменено) not vqmod версия 1) Папки из архива распаковываем в корень сайта 2) api/Simpla.php после строки: 'design' => 'Design',добавляем: #SMARTY_MINIFY 'js' => 'Javascript', 'css' => 'Stylesheet', #SMARTY_MINIFY3) view/View.php после строки: // Настраиваем плагины для смартидобавляем: #SMARTY_MINIFY // функции для работы с js $this->design->smarty->registerPlugin('block', 'js', array($this, 'add_javascript_block')); $this->design->smarty->registerPlugin('function', 'unset_js', array($this, 'unset_javascript_function')); $this->design->smarty->registerPlugin('function', 'javascript', array($this, 'print_javascript')); // функции для работы с css $this->design->smarty->registerPlugin('block', 'css', array($this, 'add_stylesheet_block')); $this->design->smarty->registerPlugin('function', 'unset_css', array($this, 'unset_stylesheet_function')); $this->design->smarty->registerPlugin('function', 'stylesheet', array($this, 'print_stylesheet')); #SMARTY_MINIFY в том же файле ПЕРЕД строкой: public function get_discounted_products_plugin($params, &$smarty)добавляем: #SMARTY_MINIFY /* * Функции для работа с файлами javascript * Регистрация js фал(а|ов) или кода */ public function add_javascript_block($params, $content, $smarty, &$repeat) { if(!isset($params['id']) || $repeat || (empty($content)) && empty($params['include'])) return false; if(!isset($params['priority'])) $params['priority'] = 10; if(!empty($params['include'])) $this->js->add_files($params['id'], $params['include'], $params['priority']); if(!empty($content)) $this->js->add_code($params['id'], $content, $params['priority']); if(!empty($params['render'])) { if(!isset($params['minify'])) $params['minify'] = null; if(!isset($params['combine'])) $params['combine'] = true; return $this->js->render($params['id'], $params['minify'], $params['combine']); } } /* * Отмена регистрации js фал(а|ов) или кода */ public function unset_javascript_function($params, $smarty) { if(!isset($params['id'])) return false; $this->js->unplug($params['id']); } /* * Вывод упакованого js файла */ public function print_javascript($params) { if(!isset($params['id'])) $params['id'] = null; if(!isset($params['combine'])) $params['combine'] = true; if(!isset($params['minify'])) $params['minify'] = null; return $this->js->render($params['id'], $params['minify'], $params['combine']); } /* * Функции для работа с файлами стилей * Регистрация css фал(а|ов) или кода */ public function add_stylesheet_block($params, $content, $smarty, &$repeat) { if(!isset($params['id']) || $repeat || (empty($content)) && empty($params['include'])) return false; if(!isset($params['priority'])) $params['priority'] = 10; if(!isset($params['less'])) $params['less'] = false; if(!empty($params['include'])) $this->css->add_files($params['id'], $params['include'], $params['priority'], $params['less']); if(!empty($content)) $this->css->add_code($params['id'], $content, $params['priority'], $params['less']); if(!empty($params['render'])) { if(!isset($params['minify'])) $params['minify'] = null; if(!isset($params['combine'])) $params['combine'] = true; return $this->css->render($params['id'], $params['minify'], $params['combine']); } } /* * Отмена регистрации css фал(а|ов) или кода */ public function unset_stylesheet_function($params, $smarty) { if(!isset($params['id'])) return false; $this->css->unplug($params['id']); } /* * Вывод упакованого css файла */ public function print_stylesheet($params) { if(!isset($params['id'])) $params['id'] = null; if(!isset($params['combine'])) $params['combine'] = true; if(!isset($params['minify'])) $params['minify'] = null; return $this->css->render($params['id'], $params['minify'], $params['combine']); } #SMARTY_MINIFY 4) в config/config.php после [smarty]добавляем: minify_js = false ; сжимать javascript (true=да, false=нет) minify_css = false ; сжимать css (true=да, false=нет) minify_gzip_level = 0 ; уровень сжатия (gzip) от 0 до 9 minify_cache_dir = cache/minify/ ; папка для кеширования 5) в .htaccess в корне файла после RewriteEngine onдобавляем: #SMARTY_MINIFY <FilesMatch "(js|css).gz[1-9]$"> <IfModule mod_headers.c> Header set Content-Encoding: gzip </IfModule> <FilesMatch "css.gz[1-9]$"> ForceType text/css </FilesMatch> <FilesMatch "js.gz[1-9]$"> ForceType text/javascript </FilesMatch> </FilesMatch> RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^cache/minify/(.+).gz([1-9])$ resize/gzip.php [L,END] #SMARTY_MINIFY Изменено 13 сентября, 2018 пользователем yr4ik Цитата Ссылка на сообщение Поделиться на другие сайты
Noxter Опубликовано 12 сентября, 2018 Жалоба Поделиться Опубликовано 12 сентября, 2018 (изменено) Архив то забыл прикрепить Апдейтед Изменено 12 сентября, 2018 пользователем Noxter Цитата Ссылка на сообщение Поделиться на другие сайты
phukortsin Опубликовано 12 сентября, 2018 Жалоба Поделиться Опубликовано 12 сентября, 2018 5) строка Header set Content-Encoding: gzip по-моему, лишняя. Во всяком случае, у меня с ней ошибка Internal Server Error, а без нее работает... Цитата Ссылка на сообщение Поделиться на другие сайты
fuckmoney Опубликовано 12 сентября, 2018 Жалоба Поделиться Опубликовано 12 сентября, 2018 5) строкаHeader set Content-Encoding: gzipпо-моему, лишняя.Во всяком случае, у меня с ней ошибка Internal Server Error, а без нее работает... Мне кажется или у вас Gzip не включен вот и ошибку бьет? Цитата Ссылка на сообщение Поделиться на другие сайты
yr4ik Опубликовано 12 сентября, 2018 Автор Жалоба Поделиться Опубликовано 12 сентября, 2018 (изменено) 5) строкаHeader set Content-Encoding: gzipпо-моему, лишняя.Во всяком случае, у меня с ней ошибка Internal Server Error, а без нее работает... Данная строка добавляет заголовок что файл сжат при помощи gzip. Если ее убрать и включить сжатие - то ресурсы могут не открываться. можно попробовать заменить через какие то другие директивы. Но для этого мне нужно знать что у вас за сервер .............. возможно отсутствует mod_headers.cпроверить можно обернув данную строку условием <IfModule mod_headers.c> Header set Content-Encoding: gzip </IfModule> Если ошибка исчезнет - значит модуль отсутсвует Изменено 12 сентября, 2018 пользователем yr4ik Цитата Ссылка на сообщение Поделиться на другие сайты
phukortsin Опубликовано 12 сентября, 2018 Жалоба Поделиться Опубликовано 12 сентября, 2018 (изменено) Спасибо всем, разобрался, действительно не подключен модуль. Изменено 12 сентября, 2018 пользователем phukortsin Цитата Ссылка на сообщение Поделиться на другие сайты
yr4ik Опубликовано 13 сентября, 2018 Автор Жалоба Поделиться Опубликовано 13 сентября, 2018 (изменено) Версия 1.3 небольшой апдейт для устранения багов переписан механизм кэширования less (теперь и импортированные, в основной файл, less - проверяются на актуальность) отключен импорт в основной css, прикладных файлов, размером до 5кб . Поскольку штатной библиотекой пока не возможно проверять их актуальность. В дальнейшем, как будет нужда, поправлю библиотеку и верну эту настройку Все инструкции и файлы находятся в шапке Изменено 13 сентября, 2018 пользователем yr4ik Цитата Ссылка на сообщение Поделиться на другие сайты
tolik109 Опубликовано 15 мая, 2019 Жалоба Поделиться Опубликовано 15 мая, 2019 А как сделать отложенную или параллельную загрузку? <script type="text/javascript" src="https://www.unidn.com/s/i.js" defer></script> чтобы добавлялся тэг «defer» ? Цитата Ссылка на сообщение Поделиться на другие сайты
yr4ik Опубликовано 15 мая, 2019 Автор Жалоба Поделиться Опубликовано 15 мая, 2019 В данный момент не реализовано.Добавлю в будущем как будет время. Цитата Ссылка на сообщение Поделиться на другие сайты
marat215 Опубликовано 26 февраля, 2020 Жалоба Поделиться Опубликовано 26 февраля, 2020 Спасибо за плагин! Как можно указать cachetime для запакованных файлов? Цитата Ссылка на сообщение Поделиться на другие сайты
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.