Чтение RSS каналов

Форум

Открыть Ответить

Новые функции CMS и их производительность относительно версий PHP

31
07.02.2018 22:45:5307.02.2018 22:57:23

А у меня там (как у человека творческого) творческий беспорядок с файлами фреймворков разных версий (для тестов или специфичных плагинов). Но, как вижу, это не касается ява-скриптов.

Это ни есть хорошо, от беспорядка все беды. Хаос будет расти как снежный ком, чем больше вспомогательных функций для наведения порядка, тем больше "бардака" в проекте, и так по нарастающей, в конечном итоге сложно разобраться самому, уже не говоря о остальных. Зачем усложнять жизнь себе и другим? Намного проще изначально продумать логику и придерживаться правил, как минимум в "продакшене".

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

С системными скриптами SLAED CMS особых сложностей нет, их немного, написаны просто и понятно. Основные сложности у дополнительных плагинов, с сжатием/сокращением ЯваСкриптов, так как многие из них отрицательно реагируют на плотное сжатие кода и как правило, теряют функционал. Поэтому упрессовка по минимуму, с максимальным сохранением работоспособности. Для того что-бы добиться максимального уровня сжатия, рекомендую использовать уже сокращённые разработчиками JavaScript файлы, которые поставляются в стандартном пакете системы CMS, заменив файлы типа jquery.slaed.js на jquery.slaed.min.js.

О сколько нам открытий чудных,
Готовит просвещенья дух,
И опыт, сын ошибок трудных,
И гений, парадоксов друг...
3.24

3.24
32
07.02.2018 23:33:40
Ну как продакшен ) У меня все время чего то делается. Я бы не сказал, что у меня бардак. Все подписано. Просто храню версии на всякий. Знаю какие работают, а с какими нужно поработать для совместимости. Обычно проблемы с новыми версиями. Поэтому старые на всякий лежат тоже. Но это скорее частный случай (у меня) Смайл - 08

Здесь молодость бродит крылато, и старость не клонит голов.
4.2

4.2
33
07.02.2018 23:35:04
Про стили - вот и делаю так, что бы максимально не переписывать, а в идеале не переписывать ничего ) Хочется попробовать сделать это. В любом случае поделюсь результатами.

Здесь молодость бродит крылато, и старость не клонит голов.
4.2

4.2
34
08.02.2018 15:24:5308.02.2018 16:01:12
ну, вроде что-то получилось.
Вот ссылка h**p://kstovo.ru/?go=xcss

ЗАМЕНА ПУТЕЙ К КАРТИНКАМ
К свойству url() автоматом подставляется абсолютный пусть до места, где лежит файл стиля. Т.е. логика работы не нарушается. Исключения составляют медиа, которые указаны как код (data:image например), путь является урлом (http(s)), если уже указан абсолютный путь (начинается с / - т.е. путь берется от корня сайта).

ЦИКЛЫ
Вот схема подключаемых стилей:
style.css - собственные стили + стили старых версий (кое что еще в работе)
sl_style.css - оригинальные стили слаеда
--sl_system.css
----/plugins/syntaxhighlighter/styles/shCore.css
----/plugins/syntaxhighlighter/styles/shThemeDefault.css
--sl_theme.css
----/templates/".$theme."/css/sl_fonts.css
kst_style.css
--/templates/".$theme."/css/k2.fonts.css
--/templates/".$theme."/css/k2.css
--/templates/".$theme."/css/mediaboxAdv-Dark.css
--/templates/".$theme."/css/stylesheet.css
--/templates/".$theme."/css/stylesheet_1.css
--/templates/".$theme."/css/stylesheet_2.css
--/templates/".$theme."/css/stylesheet_3.css
--/templates/".$theme."/css/stylesheet_4.css
--/templates/".$theme."/css/stylesheet_5.css
--/templates/".$theme."/css/stylesheet_6.css
--/templates/".$theme."/css/template-flame.css
--/templates/".$theme."/css/customk.css
jquery-ui.css

Где:
без тире - подключались в хэадере (<link>)
2 тире - импорт внутри файла верхнего уровня
4 тире - импорт внутри импорта файла верхнего уровня

Система сама выдирает import`ы и подтягивает контент. внутри импорта опять подтягивает импорт, если он есть. Вобщем это цикличная система и будет импортировать стили, пока они будут попадаться в файлах.

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

Осталось добавить кеширование и автообновление + в модуле стилей в админке сделать кнопку принудительного обновления кеша. Все )

Код вышлю Админу. Может и понравится ;)
Желающим тоже могу показать.

Здесь молодость бродит крылато, и старость не клонит голов.
4.2

4.2
35
08.02.2018 20:10:4408.02.2018 20:15:51
Интересное решение, большое спасибо.
Замеры производительности не проводили?

Замечания по функционалу. Метод сжатия кода стилей я бы вынес в отдельную функцию, предлагаю свой вариант:

function getCompressCss($css) {
	# Remove multiline comment
	$css = preg_replace('#\/\*(?!-)[\x00-\xff]*?\*\/#', '', $css);
	# Remove tabs, spaces, newlines
	$css = str_replace(array("\n", "\r", "\t"), ' ', $css);
	# Remove extra spaces
	$css = preg_replace('#\s+#', ' ', $css);
	# Remove spaces that can be removed
	$css = preg_replace('#\s?([\{\}\:\;\,])\s?#', "\\1", $css);
	return $css;
}

О сколько нам открытий чудных,
Готовит просвещенья дух,
И опыт, сын ошибок трудных,
И гений, парадоксов друг...
3.24

3.24
36
08.02.2018 21:33:43
Замеры скорости не производил, потому что как раз уже конец рабочего дня был ))
Спасибо за функцию! ) Заберу в проект ;)
Только вот вопрос с \s в указании символов. Он вроде пробелы убирает и так же переносы строк считает пробелом, поэтому отказался от него и сделал '# +#' тут то чистый пробел )

Кстати, почему не использовать массив регулярок для одного вызова preg_replace?

Здесь молодость бродит крылато, и старость не клонит голов.
4.2

4.2
37
09.02.2018 18:54:55
Конечно можно прописать регулярные выражения в массив, но не вижу особого смысла, так как код небольшой.

О сколько нам открытий чудных,
Готовит просвещенья дух,
И опыт, сын ошибок трудных,
И гений, парадоксов друг...
3.24

3.24
38
13.02.2018 13:30:3313.02.2018 13:31:04
Сделал на подобие такого же (css) с JavaScript.
Плохо, что автоматическое сжатие не получается корректно завершить. Все же придется минимизированные файлы готовить вручную (

Из фишек - кешируются файлы с внешних ресурсов (например jquery). Т.е. все сливается в один в соответствии с очередностью и потом кешируется.
Пример: http://kstovo.ru/?go=xjs

Код присылать наверное не стоит ) т.к. смысл тот же.

Только хотелось бы более грамотных регулярок для вырезания комментариев, переносов строк перед/после {,},;.

Здесь молодость бродит крылато, и старость не клонит голов.
4.2

4.2
39
13.02.2018 20:02:3213.02.2018 20:03:21

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

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

Только хотелось бы более грамотных регулярок для вырезания комментариев, переносов строк перед/после

Посмотрите данный вариант в виде отдельной функции.

function getCompressCode($code) {
	# Remove multiline comment
	$code = preg_replace('#\/\*(?!-)[\x00-\xff]*?\*\/#', '', $code);
	# Remove tabs and extra spaces
	$code = str_replace(array("\t", '  ', '   ', '    '), ' ', $code);
	# Remove other spaces before/after )
	$code = preg_replace(array('#( )+\)#', '#\)( )+#'), ')', $code);
	# Remove spaces that can be removed
	$code = preg_replace('#\s?([\{\=-])\s?#', "\\1", $code);
	return $code;
}

Последний preg_replace можно расширить дополнительными символами, но опять же следует тестировать на сохранение работоспособности.

О сколько нам открытий чудных,
Готовит просвещенья дух,
И опыт, сын ошибок трудных,
И гений, парадоксов друг...
3.24

3.24
40
14.02.2018 07:32:52
Кстати, как раз с JQuery нет проблем ))
А вот с авторским кодом есть. Ядра фреймворков я использую в min формате. Там уже нечего ужимать.
Все это дело проверял вставкой алертов после каждого импортируемого файла - как достигается ошибка - алерт не проходит. Проблемы возникают именно в авторских кодах.

ЗЫ
Можно на "ты"? )

Здесь молодость бродит крылато, и старость не клонит голов.
4.2

4.2
Открыть Ответить
Хотите опробовать SLAED CMS в действии?

Технологии

PHP MySQL HTML 5 CSS 3 jQuery jQuery UI

Контакты

  • D-49179, Deutschland
    Ostercappeln, Im Siek 6
  • +49 176 61966679

  • https://slaed.net
Идеи и предложения
Обратная связь