Перейти к содержанию
Официальный форум поддержки Simpla

Рекомендуемые сообщения

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

Изменено пользователем DaVinci
Ссылка на сообщение
Поделиться на другие сайты
  • Ответов 52
  • Дата создания
  • Последний ответ

Лучшие авторы в теме

Лучшие авторы в теме

все, вижу, вы вообще не сохраняете результат в файл - все стили собираются в одном запросе. ну это ведь жесть))

Ссылка на сообщение
Поделиться на другие сайты

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

Изменено пользователем DaVinci
Ссылка на сообщение
Поделиться на другие сайты
все, вижу, вы вообще не сохраняете результат в файл - все стили собираются в одном запросе. ну это ведь жесть))

Жесть с точки зрения читаемости кода, с точки зрения построения сайта вполне хорошо. Все стили в своих файлах.

Можно заморочиться с хэшем, но я не вижу смысла, это совсем мало что изменит.

 

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

Не думаю, каждый получит полноценный файл.

Ссылка на сообщение
Поделиться на другие сайты

Почему? у вас этот ксс файл лежит там же откуда и идёт импортирование, имя файла есть, так почему ему не подключиться?

 

потому что склеенный файл будет примерно иметь вид:

содержимое general.css
содержимое libs.css
содержимое animate.css
содержимое adaptive.css с строкой @import

так вот тут import просто будет ошибкой, а не импортируемыми стилями. Потому что он будет работать только если окажется перед содержимым general.css. И это вполне критично! нельзя импортировать не гугл фонтс не другие css. Тут можно только опять править исходный css путем перемещения кода по файлам или прописями их в php. 

Ссылка на сообщение
Поделиться на другие сайты
так вот тут import просто будет ошибкой, а не импортируемыми стилями.
Потому что он будет работать только если окажется перед
содержимым general.css. И это вполне критично! нельзя импортировать не
гугл фонтс не другие css. Тут можно только опять править исходный css
путем перемещения кода по файлам или прописями их в php.

Да, согласен. Я просто в 99.9% не использую import в ксс поэтому не знал про тонкость что его надо подключать только в начале объявления таблицы стилей.

Ссылка на сообщение
Поделиться на другие сайты

 

все, вижу, вы вообще не сохраняете результат в файл - все стили собираются в одном запросе. ну это ведь жесть))

Жесть с точки зрения читаемости кода, с точки зрения построения сайта вполне хорошо. Все стили в своих файлах.

Можно заморочиться с хэшем, но я не вижу смысла, это совсем мало что изменит.

 

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

Не думаю, каждый получит полноценный файл.

 

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

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

Время генерации файла: 0.034197092056274

Берем что время отдачи статики = 0, то получаем что разница 0.03 сек.

Среднее значение от 0.033 до 0.035 при обновлении по CTRL+F5 (сброс кэша)

Изменено пользователем a13x
Ссылка на сообщение
Поделиться на другие сайты

 

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

Время генерации файла: 0.034197092056274

Берем что время отдачи статики = 0, то получаем что разница 0.03 сек.

Среднее значение от 0.033 до 0.035 при обновлении по CTRL+F5 (сброс кэша)

 

а в чем тогда плюсы по сравнению с моим методом?

Ни в скорости ни в удобстве (ведь нужна постоянная адаптации css файлов и определенные условия)? 

если есть негатив к vqmod - то я уже писал выше.

Переделать не составит труда, а народу может так лучше будет. Появится интерес.

То я много чего через vqmod делаю, поэтому особого желания на инструкцию переделывать - нет

Ссылка на сообщение
Поделиться на другие сайты

 

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

Время генерации файла: 0.034197092056274

Берем что время отдачи статики = 0, то получаем что разница 0.03 сек.

Среднее значение от 0.033 до 0.035 при обновлении по CTRL+F5 (сброс кэша)

 

если учесть что, к примеру, главная страница демо симплы генерируется за 0.04 то 0.03 только для css это очень критично

 

http://prntscr.com/i8ul1z

Ссылка на сообщение
Поделиться на другие сайты
если учесть что, к примеру, главная страница демо симплы генерируется за 0.04 то 0.03 только для css это очень критично

думаю у вас какой нить кривой запрос из базы что-то типа FIND_IN_SET будет дольше обрабатываться, чем чтение локального файла :lol: и я уже молчу про доп. запросы к css или js, которые по времени также обрабатываются.

 

а в чем тогда плюсы по сравнению с моим методом?

Для меня? В простоте, в скорости (не по сравнению с вашим т.к. тут одинаково будет), в удобстве. Для вас не знаю :lol: Вы написали свой автомобиль, он вам нравится, я написал свой велосипед и он мне нравится. Я лишь сказал что можно сделать всё тоже самое используя пару строк на пхп.

Изменено пользователем a13x
Ссылка на сообщение
Поделиться на другие сайты

 

если учесть что, к примеру, главная страница демо симплы генерируется за 0.04 то 0.03 только для css это очень критично

думаю у вас какой нить кривой запрос из базы что-то типа FIND_IN_SET будет дольше обрабатываться, чем чтение локального файла :lol: и я уже молчу про доп. запросы к css или js, которые по времени также обрабатываются.

 

а в чем тогда плюсы по сравнению с моим методом?

Для меня? В простоте, в скорости (не по сравнению с вашим т.к. тут одинаково будет), в удобстве. Для вас не знаю :lol: Вы написали свой автомобиль, он вам нравится, я написал свой велосипед и он мне нравится. Я лишь сказал что можно сделать всё тоже самое используя пару строк на пхп.

 

ну чего одинаково в скорости - если у меня отдается файл на прямую без 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 перенесет и путь к прикладным сменит. 

 

В размере файлов - у меня они тоже больше сожмутся.

 

Ну в общем дело ваше. Делайте как вам удобней... 

Ссылка на сообщение
Поделиться на другие сайты

Я с вами полностью согласен, но я например не хочу подключать в систему VQMOD т.к. он полюбому будет тормозить систему. Я уверен вы не замеряли скорость работы с ним и без него. Я на опенкарте с ним намучился и ставить его врагу не пожелаю.

P.s. если бы ваш плагин работал без VQMOD, бесспорно это было бы лучшее решение!

Изменено пользователем a13x
Ссылка на сообщение
Поделиться на другие сайты

Я с вами полностью согласен, но я например не хочу подключать в систему 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.19

http://joxi.ru/VrwydvpiKQpeP2?d=1 - повторная загрузка уже с кэшем 0.076

 

страница товара: 

 

чистая симпла:

http://joxi.ru/52aXl6JiGRL7bm?d=1 - 0.09

 

vqmod: 

http://joxi.ru/EA4doBaiDzLEVA?d=1 - если генерируется кэш 0.16

http://joxi.ru/n2YLx9Yij9Xzxm?d=1 - повторная загрузка 0.095

 

 

как видно по таймингам задержка примерно как на вашем css скрипте 

 

если есть желание - то можете сами погонять

http://demo.tmp.pp.ua/vqmod/

admin

admin

 

 

по опенкарту

simpla это совсем другой движок и другое количество файлов. И очень многое зависит от самих модулей. Если бы данный подход был так ужасен - то с чего бы его внедряли в основу opencart 2 (ocmod)? 

Что разработчики opencart настолько не дружат с головой? 

 

любая модульность будет излишней нагрузкой. Если разрабатывается огромный проект с 50к товаров и тд - то я бы не сильно советовал внедрять туда vqmod. Потому что с большими проектами каждая доля секунды на счету. Там и стандартная симпла имеет целую кучу недочетов что замедлит работу.

Изменено пользователем yr4ik
Ссылка на сообщение
Поделиться на другие сайты
  • 7 месяцев спустя...

Версия 1.2

 

+ добавлены новые параметры minify и combine  в регистрацию js/css (работают при render=true)

+ добавлена поддержка синтаксиса less. Активируется при регистрации с параметром less=true

 
скачать и подробнее описание в шапке
 
 
Также залил демонстративный шаблон на github
Изменено пользователем yr4ik
Ссылка на сообщение
Поделиться на другие сайты

not vqmod версия
 
 
1) Папки из архива распаковываем в корень сайта 
 
2) api/Simpla.php после строки: 

'design'     => 'Design',

добавляем: 

#SMARTY_MINIFY
        'js'     => 'Javascript',
        'css'     => 'Stylesheet',
#SMARTY_MINIFY


3) 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
Изменено пользователем yr4ik
Ссылка на сообщение
Поделиться на другие сайты

5) строка

Header set Content-Encoding: gzip

по-моему, лишняя.

Во всяком случае, у меня с ней ошибка Internal Server Error, а без нее работает...

Ссылка на сообщение
Поделиться на другие сайты

5) строка

Header set Content-Encoding: gzip

по-моему, лишняя.

Во всяком случае, у меня с ней ошибка Internal Server Error, а без нее работает...

 

Мне кажется или у вас Gzip не включен вот и ошибку бьет?

Ссылка на сообщение
Поделиться на другие сайты

5) строка

Header set Content-Encoding: gzip

по-моему, лишняя.

Во всяком случае, у меня с ней ошибка Internal Server Error, а без нее работает...

 
Данная строка добавляет заголовок что файл сжат при помощи gzip. Если ее убрать и включить сжатие - то ресурсы могут не открываться. 
можно попробовать заменить через какие то другие директивы. Но для этого мне нужно знать что у вас за сервер
 
..............
 
возможно отсутствует mod_headers.c
проверить можно обернув данную строку условием
<IfModule mod_headers.c>
	Header set Content-Encoding: gzip
</IfModule>

Если ошибка исчезнет - значит модуль отсутсвует

 
 
Изменено пользователем yr4ik
Ссылка на сообщение
Поделиться на другие сайты

Спасибо всем, разобрался, действительно не подключен модуль.

Изменено пользователем phukortsin
Ссылка на сообщение
Поделиться на другие сайты

Версия 1.3


 


небольшой апдейт для устранения багов


  • переписан механизм кэширования less (теперь и импортированные, в основной файл, less - проверяются на актуальность) 
  • отключен импорт в основной css, прикладных файлов, размером до 5кб . Поскольку штатной библиотекой пока не возможно проверять их актуальность. В дальнейшем, как будет нужда, поправлю библиотеку и верну эту настройку

 


Все инструкции и файлы находятся в шапке


Изменено пользователем yr4ik
Ссылка на сообщение
Поделиться на другие сайты
  • 8 месяцев спустя...

А как сделать отложенную или параллельную загрузку?
 

<script type="text/javascript" src="https://www.unidn.com/s/i.js" defer></script>

чтобы добавлялся тэг «defer» ?

Ссылка на сообщение
Поделиться на другие сайты
  • 9 месяцев спустя...

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
×
×
  • Создать...