Мизантроп Posted September 22, 2014 Report Share Posted September 22, 2014 Гоняетесь за галочками от Google по оптимизации?https://developers.google.com/speed/pagespeed/insights/?hl=ru Тогда это решение для вас. Встроенное пожатие страниц вашего магазина. создайте бекап файла Smarty/libs/sysplugins/smarty_internal_templatecompilerbase.php на всякий пожарный. Я не уверен, но кажется что Smarty давно не обновляется, но если что бекап пригодится. скачайте smarty_internal_templatecompilerbase.php и залейте файл вместо него. почистите папку compiled/имя вашего проекта/ пользуйтесь. Quote Link to post Share on other sites
Solution osben Posted September 22, 2014 Solution Report Share Posted September 22, 2014 с какой то версии симплы есть в config/config.php строка smarty_html_minify = false;надо заменить на true Если Ваше решение отличается и оно на Ваше мнение лучше, то думаю стоит добавить патч на GitHub Quote Link to post Share on other sites
Мизантроп Posted September 22, 2014 Author Report Share Posted September 22, 2014 с какой то версии симплы есть в config/config.php строка smarty_html_minify = false;надо заменить на true Если Ваше решение отличается и оно на Ваше мнение лучше, то думаю стоит добавить патч на GitHubблин подстава... действительно есть. Но в старой не было... хм, что делать прям не знаю. А что там за строчка кеш? Расскажите? Quote Link to post Share on other sites
Мизантроп Posted September 22, 2014 Author Report Share Posted September 22, 2014 с какой то версии симплы есть в config/config.php строка smarty_html_minify = false;надо заменить на true Если Ваше решение отличается и оно на Ваше мнение лучше, то думаю стоит добавить патч на GitHubмоё решение меркнет перед полноценным минификатором. У вас даже контент в теxtarea предусмотрен. Quote Link to post Share on other sites
Karen Posted September 24, 2014 Report Share Posted September 24, 2014 с какой то версии симплы есть в config/config.php строка smarty_html_minify = false;надо заменить на true Если Ваше решение отличается и оно на Ваше мнение лучше, то думаю стоит добавить патч на GitHubЧто если нет такой строчки в config.php? Quote Link to post Share on other sites
osben Posted September 24, 2014 Report Share Posted September 24, 2014 Что если нет такой строчки в config.php?То надо обновится что было. Что именно обновлять, простите нету времени анализировать и расписывать в бесплатном порядке Quote Link to post Share on other sites
SerSport Posted September 29, 2014 Report Share Posted September 29, 2014 моё решение меркнет перед полноценным минификатором. У вас даже контент в теxtarea предусмотрен.Стандартное решение хорошо, но есть нюансы при компиляции, остаются лишние пробелы "<!DOCTYPE html> <html> <head> <title>Хиты продаж</title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <m" Quote Link to post Share on other sites
Мизантроп Posted September 29, 2014 Author Report Share Posted September 29, 2014 Стандартное решение хорошо, но есть нюансы при компиляции, остаются лишние пробелы "<!DOCTYPE html> <html> <head> <title>Хиты продаж</title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <m"хм... ну хорошо, вы дали мне надежду что моё не стандартное решение не хуже. Допилю и выложу чуть позже. Quote Link to post Share on other sites
Мизантроп Posted September 29, 2014 Author Report Share Posted September 29, 2014 Что если нет такой строчки в config.php?ну или юзать моё решение если нет желания обновляться. Quote Link to post Share on other sites
SerSport Posted September 30, 2014 Report Share Posted September 30, 2014 ну или юзать моё решение если нет желания обновляться.То что я Вам показал, после обновления Простой способ решить данную проблему, после: // call compiler$_compiled_code = $this->doCompile($_content); добавить: $_compiled_code = preg_replace('#[\n\r\t]#us', '', $_compiled_code); p.s. визуально проблема решена, но я не программист, может что-то и не правильно написал и в дальнейшем могут возникнуть проблемы.. Quote Link to post Share on other sites
Kors Posted September 30, 2014 Report Share Posted September 30, 2014 То что я Вам показал, после обновления Простой способ решить данную проблему, после: // call compiler$_compiled_code = $this->doCompile($_content); добавить: $_compiled_code = preg_replace('#[\n\r\t]#us', '', $_compiled_code); p.s. визуально проблема решена, но я не программист, может что-то и не правильно написал и в дальнейшем могут возникнуть проблемы.. Еще как могут!Например, если в шаблоне будет фрагмент JS из двух строк видаa=1b=2то Ваш метод склеит две строки в одну, и гарантирована ошибка... Quote Link to post Share on other sites
SerSport Posted September 30, 2014 Report Share Posted September 30, 2014 Еще как могут!Например, если в шаблоне будет фрагмент JS из двух строк видаa=1b=2то Ваш метод склеит две строки в одну, и гарантирована ошибка...А разве переменные или как там это называется, не разделяются запитой ? Если вы правы, то там нужна более детальное функция)) Quote Link to post Share on other sites
yr4ik Posted September 30, 2014 Report Share Posted September 30, 2014 Kors прав. Но это страшно не только для жс но и html и css.Поскольку данное регулярное выражении вырежет все пробелы.Если хотите избавится от тех нескольких пробелов - то копайте сюда Smarty\libs\plugins\outputfilter.trimwhitespace.php Quote Link to post Share on other sites
Мизантроп Posted September 30, 2014 Author Report Share Posted September 30, 2014 А разве переменные или как там это называется, не разделяются запитой ? Если вы правы, то там нужна более детальное функция))просто игнорются вложения в script textarea style preостальное пожимается. Причем табуляцию убирать тоже нельзя, она может использоваться как пробел.У нормальных людей нет скриптов в коде страниц. Только линки. Quote Link to post Share on other sites
Kors Posted September 30, 2014 Report Share Posted September 30, 2014 У нормальных людей нет скриптов в коде страниц. Только линки.У подавляющего большинства сайтов есть JS-скрипты внутри body. Например, так оформляются разные счетчики и подобные вставки. По-Вашему, и http://rozetka.com.ua/ и http://www.mvideo.ru/ и десятки подобных сделаны ненормальными. Как-то Вы категорично оцениваете... Другой вопрос, что JS-скрипт надо писать, не полагаясь на переводы строк как разделители, а разделять операторы явно через ';'... Quote Link to post Share on other sites
SerSport Posted September 30, 2014 Report Share Posted September 30, 2014 Дискуссия интересна, столько программистов, а конкретно решение так никто и не предложил... Quote Link to post Share on other sites
yr4ik Posted October 3, 2014 Report Share Posted October 3, 2014 SerSport Я ж уже вроде подсказывал куда копать... Smarty\libs\plugins\outputfilter.trimwhitespace.php Находите строку 63:'#(:SMARTY@!@|>)\s+(?=@!@SMARTY:|<)#s' => '\1 \2',И заменяете ее на:'#(:SMARTY@!@|>)\s+(?=@!@SMARTY:|<)#s' => '\1\2',Кстати. Я бы на Вашем месте меньше волновался б за эти несчастные пару пробелов. Поскольку при установке smarty_html_minify = true; Функция для уменьшения html кода страницы вызывается каждый раз после генерации html. Я уже говорил Мизантропу что бы он, если хочет сделать нормально, делал pre фильтр. Для того что бы сжать еще взятый tpl. Но он пошел каким то не понятным путем правок smarty и тд. Quote Link to post Share on other sites
Мизантроп Posted October 3, 2014 Author Report Share Posted October 3, 2014 Для того что бы сжать еще взятый tpl. Но он пошел каким то не понятным путем правок smarty и тд. Здесь в теме опубликован как раз метод пожатия компайла шаблонов. Этого же достаточно. Или кто-то из нас кого-то не понял. Quote Link to post Share on other sites
Мизантроп Posted October 3, 2014 Author Report Share Posted October 3, 2014 У подавляющего большинства сайтов есть JS-скрипты внутри body. Например, так оформляются разные счетчики и подобные вставки. По-Вашему, и http://rozetka.com.ua/ и http://www.mvideo.ru/ и десятки подобных сделаны ненормальными. Как-то Вы категорично оцениваете...а что мешает сделать счетчики в js-файлах? Я лишь говорю об идеальном положении вещей. HTML страница для html-кода. JS-файлы для js-кода и т.д. Разделяй и властвуй. Quote Link to post Share on other sites
yr4ik Posted October 3, 2014 Report Share Posted October 3, 2014 Для того что бы сжать еще взятый tpl. Но он пошел каким то не понятным путем правок smarty и тд. Здесь в теме опубликован как раз метод пожатия компайла шаблонов. Этого же достаточно. Или кто-то из нас кого-то не понял. Вы пропускаете через регулярные выражения уже результат выполнения шаблона. То есть каждый шаблон, при каждой загрузке страницы, проходит через вашу регулярку.Вы писали в теме http://forum.simplacms.ru/topic/8320-где-в-движке-simpla-csm-компилятся-шаблоны/ Те, что потом записываются в /var/www/site/compiled/template/*.tpl.phpХочу сделать пожатие html кода. Пока удалось пожимать на лету, но не выход ибо нагрузка на процессор сервера.По сути Ваше текущее решение и есть пожатие на лету... И smarty_html_minify = true - тоже есть пожатие на лету. Quote Link to post Share on other sites
yr4ik Posted October 3, 2014 Report Share Posted October 3, 2014 Вот на мой взгляд лучшее решения для этой задачи. Может кто что предложит лучше.Simpla с smarty > 3В smarty - ничего не меняемПросто заменяем api/Design.phpи в config/config.php ставим smarty_html_minify = true;Design.php Quote Link to post Share on other sites
Мизантроп Posted October 4, 2014 Author Report Share Posted October 4, 2014 Вы пропускаете через регулярные выражения уже результат выполнения шаблона. То есть каждый шаблон, при каждой загрузке страницы, проходит через вашу регулярку.Вы писали в теме http://forum.simplacms.ru/topic/8320-где-в-движке-simpla-csm-компилятся-шаблоны/ По сути Ваше текущее решение и есть пожатие на лету... И smarty_html_minify = true - тоже есть пожатие на лету.Нет дорогой мой человек, компайл компилится только один раз при изменении шаблона. А дальше он отдается по запросу. Вы можете открыть файлы и увидеть что они хранятся сжатыми. Так что нет ни какого "на лету". Только если у вас компайл не настроен на постоянную компиляцию при каждом запросе. Но это уже не ко мне А та тема прошлое моё неудачное решение задачи. Quote Link to post Share on other sites
Мизантроп Posted October 4, 2014 Author Report Share Posted October 4, 2014 Вот на мой взгляд лучшее решения для этой задачи. Может кто что предложит лучше.Simpla с smarty > 3В smarty - ничего не меняемПросто заменяем api/Design.phpи в config/config.php ставим smarty_html_minify = true;а вы уверены, что этот файл ни у кого не изменялся напильником? Как вариант указать строки с изменениями. Quote Link to post Share on other sites
yr4ik Posted October 4, 2014 Report Share Posted October 4, 2014 Нет дорогой мой человек, компайл компилится только один раз при изменении шаблона. А дальше он отдается по запросу. Вы можете открыть файлы и увидеть что они хранятся сжатыми. Так что нет ни какого "на лету". Только если у вас компайл не настроен на постоянную компиляцию при каждом запросе. Но это уже не ко мне А та тема прошлое моё неудачное решение задачи. Беру свои слова назад. У Вас не налету.Но предложенный Вами способ - будет терять переменные и делать ошибки - и это факт.Для примера можете попробовать передать ассоциативный массив в смарти. К примеру такой: $simpla->view->assign('ttestt', array('key two spaces'=>'work')); И в шаблоне попробовать вывести: {$ttestt['key two spaces']} В результате переменной - не будет, а если включен показ ошибок E_ALL то еще и ошибку. И это пример только с пробелами. А могут быть еще и \n\r\t и что угодно...А вообще - что это за проверка такая? if(!false && !preg_match('#/(simpla|order)/#i',$this->template->getTemplateFilepath())){ Может хотя бы так: if(!preg_match('#/(simpla|order)/#i', $this->smarty->_current_file)){ а вы уверены, что этот файл ни у кого не изменялся напильником? Как вариант указать строки с изменениями. Ну если у кого то изменялся то там всего перенести 1 ф-ю и 1 строку заменить, а не заменять весь класс смарти. Quote Link to post Share on other sites
Мизантроп Posted October 4, 2014 Author Report Share Posted October 4, 2014 По моему вы придираетесь. Вероятность, что будет ассоциативный массив, с ключом в котором есть двойной пробел стремится к нулю. И даже если он есть, то вероятность, что будут обращаться по его имени ещё меньше все ограничится ещё на этапе перебора. Перенос в ключе и вовсе может вызвать синтаксическую ошибку вы не находите? Вообще не могу представить себе ситуацию когда кто-то будет использовать такие ключи. Это нужно быть большим извращенцем оригиналом. А если и так, то он сам себе злобный Буратино. Второе является скорее перестраховкой. Осталось от старой версии кода поскольку тестировался на живом магазине. Можно убрать. Так же не вижу проблем с указанием имени вместо пути. Даже если и попадет в условие фильтра какая нибудь ещё страница на работу сайта это не скажется. И потом вы не внимательно читаете тему я тут уже написал, что решение с указанием в конфигурации параметра более лучше. Так об чем разговор? Показать кто лучше или круче? Quote Link to post Share on other sites
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.