Мизантроп Опубликовано 22 сентября, 2014 Жалоба Поделиться Опубликовано 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/имя вашего проекта/ пользуйтесь. Цитата Ссылка на сообщение Поделиться на другие сайты
Решение osben Опубликовано 22 сентября, 2014 Решение Жалоба Поделиться Опубликовано 22 сентября, 2014 с какой то версии симплы есть в config/config.php строка smarty_html_minify = false;надо заменить на true Если Ваше решение отличается и оно на Ваше мнение лучше, то думаю стоит добавить патч на GitHub Цитата Ссылка на сообщение Поделиться на другие сайты
Мизантроп Опубликовано 22 сентября, 2014 Автор Жалоба Поделиться Опубликовано 22 сентября, 2014 с какой то версии симплы есть в config/config.php строка smarty_html_minify = false;надо заменить на true Если Ваше решение отличается и оно на Ваше мнение лучше, то думаю стоит добавить патч на GitHubблин подстава... действительно есть. Но в старой не было... хм, что делать прям не знаю. А что там за строчка кеш? Расскажите? Цитата Ссылка на сообщение Поделиться на другие сайты
Мизантроп Опубликовано 22 сентября, 2014 Автор Жалоба Поделиться Опубликовано 22 сентября, 2014 с какой то версии симплы есть в config/config.php строка smarty_html_minify = false;надо заменить на true Если Ваше решение отличается и оно на Ваше мнение лучше, то думаю стоит добавить патч на GitHubмоё решение меркнет перед полноценным минификатором. У вас даже контент в теxtarea предусмотрен. Цитата Ссылка на сообщение Поделиться на другие сайты
Karen Опубликовано 24 сентября, 2014 Жалоба Поделиться Опубликовано 24 сентября, 2014 с какой то версии симплы есть в config/config.php строка smarty_html_minify = false;надо заменить на true Если Ваше решение отличается и оно на Ваше мнение лучше, то думаю стоит добавить патч на GitHubЧто если нет такой строчки в config.php? Цитата Ссылка на сообщение Поделиться на другие сайты
osben Опубликовано 24 сентября, 2014 Жалоба Поделиться Опубликовано 24 сентября, 2014 Что если нет такой строчки в config.php?То надо обновится что было. Что именно обновлять, простите нету времени анализировать и расписывать в бесплатном порядке Цитата Ссылка на сообщение Поделиться на другие сайты
SerSport Опубликовано 29 сентября, 2014 Жалоба Поделиться Опубликовано 29 сентября, 2014 моё решение меркнет перед полноценным минификатором. У вас даже контент в теxtarea предусмотрен.Стандартное решение хорошо, но есть нюансы при компиляции, остаются лишние пробелы "<!DOCTYPE html> <html> <head> <title>Хиты продаж</title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <m" Цитата Ссылка на сообщение Поделиться на другие сайты
Мизантроп Опубликовано 29 сентября, 2014 Автор Жалоба Поделиться Опубликовано 29 сентября, 2014 Стандартное решение хорошо, но есть нюансы при компиляции, остаются лишние пробелы "<!DOCTYPE html> <html> <head> <title>Хиты продаж</title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <m"хм... ну хорошо, вы дали мне надежду что моё не стандартное решение не хуже. Допилю и выложу чуть позже. Цитата Ссылка на сообщение Поделиться на другие сайты
Мизантроп Опубликовано 29 сентября, 2014 Автор Жалоба Поделиться Опубликовано 29 сентября, 2014 Что если нет такой строчки в config.php?ну или юзать моё решение если нет желания обновляться. Цитата Ссылка на сообщение Поделиться на другие сайты
SerSport Опубликовано 30 сентября, 2014 Жалоба Поделиться Опубликовано 30 сентября, 2014 ну или юзать моё решение если нет желания обновляться.То что я Вам показал, после обновления Простой способ решить данную проблему, после: // call compiler$_compiled_code = $this->doCompile($_content); добавить: $_compiled_code = preg_replace('#[\n\r\t]#us', '', $_compiled_code); p.s. визуально проблема решена, но я не программист, может что-то и не правильно написал и в дальнейшем могут возникнуть проблемы.. Цитата Ссылка на сообщение Поделиться на другие сайты
Kors Опубликовано 30 сентября, 2014 Жалоба Поделиться Опубликовано 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то Ваш метод склеит две строки в одну, и гарантирована ошибка... Цитата Ссылка на сообщение Поделиться на другие сайты
SerSport Опубликовано 30 сентября, 2014 Жалоба Поделиться Опубликовано 30 сентября, 2014 Еще как могут!Например, если в шаблоне будет фрагмент JS из двух строк видаa=1b=2то Ваш метод склеит две строки в одну, и гарантирована ошибка...А разве переменные или как там это называется, не разделяются запитой ? Если вы правы, то там нужна более детальное функция)) Цитата Ссылка на сообщение Поделиться на другие сайты
yr4ik Опубликовано 30 сентября, 2014 Жалоба Поделиться Опубликовано 30 сентября, 2014 Kors прав. Но это страшно не только для жс но и html и css.Поскольку данное регулярное выражении вырежет все пробелы.Если хотите избавится от тех нескольких пробелов - то копайте сюда Smarty\libs\plugins\outputfilter.trimwhitespace.php Цитата Ссылка на сообщение Поделиться на другие сайты
Мизантроп Опубликовано 30 сентября, 2014 Автор Жалоба Поделиться Опубликовано 30 сентября, 2014 А разве переменные или как там это называется, не разделяются запитой ? Если вы правы, то там нужна более детальное функция))просто игнорются вложения в script textarea style preостальное пожимается. Причем табуляцию убирать тоже нельзя, она может использоваться как пробел.У нормальных людей нет скриптов в коде страниц. Только линки. Цитата Ссылка на сообщение Поделиться на другие сайты
Kors Опубликовано 30 сентября, 2014 Жалоба Поделиться Опубликовано 30 сентября, 2014 У нормальных людей нет скриптов в коде страниц. Только линки.У подавляющего большинства сайтов есть JS-скрипты внутри body. Например, так оформляются разные счетчики и подобные вставки. По-Вашему, и http://rozetka.com.ua/ и http://www.mvideo.ru/ и десятки подобных сделаны ненормальными. Как-то Вы категорично оцениваете... Другой вопрос, что JS-скрипт надо писать, не полагаясь на переводы строк как разделители, а разделять операторы явно через ';'... Цитата Ссылка на сообщение Поделиться на другие сайты
SerSport Опубликовано 30 сентября, 2014 Жалоба Поделиться Опубликовано 30 сентября, 2014 Дискуссия интересна, столько программистов, а конкретно решение так никто и не предложил... Цитата Ссылка на сообщение Поделиться на другие сайты
yr4ik Опубликовано 3 октября, 2014 Жалоба Поделиться Опубликовано 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 и тд. Цитата Ссылка на сообщение Поделиться на другие сайты
Мизантроп Опубликовано 3 октября, 2014 Автор Жалоба Поделиться Опубликовано 3 октября, 2014 Для того что бы сжать еще взятый tpl. Но он пошел каким то не понятным путем правок smarty и тд. Здесь в теме опубликован как раз метод пожатия компайла шаблонов. Этого же достаточно. Или кто-то из нас кого-то не понял. Цитата Ссылка на сообщение Поделиться на другие сайты
Мизантроп Опубликовано 3 октября, 2014 Автор Жалоба Поделиться Опубликовано 3 октября, 2014 У подавляющего большинства сайтов есть JS-скрипты внутри body. Например, так оформляются разные счетчики и подобные вставки. По-Вашему, и http://rozetka.com.ua/ и http://www.mvideo.ru/ и десятки подобных сделаны ненормальными. Как-то Вы категорично оцениваете...а что мешает сделать счетчики в js-файлах? Я лишь говорю об идеальном положении вещей. HTML страница для html-кода. JS-файлы для js-кода и т.д. Разделяй и властвуй. Цитата Ссылка на сообщение Поделиться на другие сайты
yr4ik Опубликовано 3 октября, 2014 Жалоба Поделиться Опубликовано 3 октября, 2014 Для того что бы сжать еще взятый tpl. Но он пошел каким то не понятным путем правок smarty и тд. Здесь в теме опубликован как раз метод пожатия компайла шаблонов. Этого же достаточно. Или кто-то из нас кого-то не понял. Вы пропускаете через регулярные выражения уже результат выполнения шаблона. То есть каждый шаблон, при каждой загрузке страницы, проходит через вашу регулярку.Вы писали в теме http://forum.simplacms.ru/topic/8320-где-в-движке-simpla-csm-компилятся-шаблоны/ Те, что потом записываются в /var/www/site/compiled/template/*.tpl.phpХочу сделать пожатие html кода. Пока удалось пожимать на лету, но не выход ибо нагрузка на процессор сервера.По сути Ваше текущее решение и есть пожатие на лету... И smarty_html_minify = true - тоже есть пожатие на лету. Цитата Ссылка на сообщение Поделиться на другие сайты
yr4ik Опубликовано 3 октября, 2014 Жалоба Поделиться Опубликовано 3 октября, 2014 Вот на мой взгляд лучшее решения для этой задачи. Может кто что предложит лучше.Simpla с smarty > 3В smarty - ничего не меняемПросто заменяем api/Design.phpи в config/config.php ставим smarty_html_minify = true;Design.php Цитата Ссылка на сообщение Поделиться на другие сайты
Мизантроп Опубликовано 4 октября, 2014 Автор Жалоба Поделиться Опубликовано 4 октября, 2014 Вы пропускаете через регулярные выражения уже результат выполнения шаблона. То есть каждый шаблон, при каждой загрузке страницы, проходит через вашу регулярку.Вы писали в теме http://forum.simplacms.ru/topic/8320-где-в-движке-simpla-csm-компилятся-шаблоны/ По сути Ваше текущее решение и есть пожатие на лету... И smarty_html_minify = true - тоже есть пожатие на лету.Нет дорогой мой человек, компайл компилится только один раз при изменении шаблона. А дальше он отдается по запросу. Вы можете открыть файлы и увидеть что они хранятся сжатыми. Так что нет ни какого "на лету". Только если у вас компайл не настроен на постоянную компиляцию при каждом запросе. Но это уже не ко мне А та тема прошлое моё неудачное решение задачи. Цитата Ссылка на сообщение Поделиться на другие сайты
Мизантроп Опубликовано 4 октября, 2014 Автор Жалоба Поделиться Опубликовано 4 октября, 2014 Вот на мой взгляд лучшее решения для этой задачи. Может кто что предложит лучше.Simpla с smarty > 3В smarty - ничего не меняемПросто заменяем api/Design.phpи в config/config.php ставим smarty_html_minify = true;а вы уверены, что этот файл ни у кого не изменялся напильником? Как вариант указать строки с изменениями. Цитата Ссылка на сообщение Поделиться на другие сайты
yr4ik Опубликовано 4 октября, 2014 Жалоба Поделиться Опубликовано 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 строку заменить, а не заменять весь класс смарти. Цитата Ссылка на сообщение Поделиться на другие сайты
Мизантроп Опубликовано 4 октября, 2014 Автор Жалоба Поделиться Опубликовано 4 октября, 2014 По моему вы придираетесь. Вероятность, что будет ассоциативный массив, с ключом в котором есть двойной пробел стремится к нулю. И даже если он есть, то вероятность, что будут обращаться по его имени ещё меньше все ограничится ещё на этапе перебора. Перенос в ключе и вовсе может вызвать синтаксическую ошибку вы не находите? Вообще не могу представить себе ситуацию когда кто-то будет использовать такие ключи. Это нужно быть большим извращенцем оригиналом. А если и так, то он сам себе злобный Буратино. Второе является скорее перестраховкой. Осталось от старой версии кода поскольку тестировался на живом магазине. Можно убрать. Так же не вижу проблем с указанием имени вместо пути. Даже если и попадет в условие фильтра какая нибудь ещё страница на работу сайта это не скажется. И потом вы не внимательно читаете тему я тут уже написал, что решение с указанием в конфигурации параметра более лучше. Так об чем разговор? Показать кто лучше или круче? Цитата Ссылка на сообщение Поделиться на другие сайты
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.