Делаю Шаблонизатор. Вопрос по производительсности.

PN
На сайте с 01.05.2008
Offline
113
592

ПРивет всем. Делаю Шаблонизатор. Вопрос по производительсности.

Как быстрее и менее нагрузочно сделать шаблонизатор?

Мой метод:

Наблон html и в нем вставки в виде {TEXT}. {MENU} ... и т.п.

Далее пишется ob_start(); $TEMPLATE['content'] = ob_get_contents();

ob_end_clean();

и через реплейс вставляется на сайт:

$template = str_replace("{TEXT}", $TEMPLATE['content'], $template);

Это самый быстрый способ и хороши делать таким методом?

И стоит ли так же загонять цикл новостей с многократным реплейсом?

вставляем новость, пишем ее в буфер:

function replace_text($result,$arraynews){

$result = str_replace("{text}", $arraynews['text'], $result);

}

ob_start(replace_text);

Вайл(новость есесть){

тепмлейт новости и в ней {TITLE}

далее еще чето и {TEXT}

ПРямо в цикле в конце перезаписываем значения {TITLE}, {TEXT}

} //Вайл(новость есесть){

$TEMPLATE['news'] = ob_get_contents();

ob_end_clean();

$template = str_replace("{NEWS}", $TEMPLATE['news'], $template);

Вот такая вот логика. Вроде просто но правильно ли? Стоит ли так делатЬ? Нагрузка на сервер минимальаня или есть быстрее способы?

n0name
На сайте с 22.12.2006
Offline
54
#1

Лучший способ — это собрать все возможные варианты и замерить производительность на каком-нибудь большом тексте.

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

Сервис сравнения цена на VPS (http://vpska.com/)
B
На сайте с 25.02.2009
Offline
68
#2

Зачем вообще функции ob_*? Они каким боком к str_replace относятся? Если несколько замен то лучше strtr

Бесплатная CMS LitePublisher это блог, вики, тикет система, голосование (http://litepublisher.ru/) на высокой скорости с минимум памяти
PN
На сайте с 01.05.2008
Offline
113
#3
blogolet:
Зачем вообще функции ob_*? Они каким боком к str_replace относятся? Если несколько замен то лучше strtr

Ну потому что есть просто выводимые данные, а есть через шаблон подключенный. И если через подключенный, то контент сначала загоняется в переменную $X и через реплейс выводит.

Monsterkill2008
На сайте с 01.10.2008
Offline
25
#4
blogolet:
Зачем вообще функции ob_*? Они каким боком к str_replace относятся? Если несколько замен то лучше strtr

А кто сказал что они должны к str_replace относиться? Это функции работы с буфером.

Prosto_niki , если не разбираетесь в шаблонизаторах, то используйте нативные шаблоны чтоб не заморачиваться.

C
На сайте с 28.01.2010
Offline
70
#5
Prosto_niki:

ПРямо в цикле в конце перезаписываем значения {TITLE}, {TEXT}


$tpl['{TITLE}'] = 'титл';
$tpl['{TEXT}'] = 'текст';
$tpl['{MENU}'] = 'меню';
....


$template = str_replace(array_keys($tpl), array_values($tpl), $template);
Это - личная подпись. Здесь обычно ставят ссылки на всякие кривые сайты, надеясь получить "жирный бек".
PN
На сайте с 01.05.2008
Offline
113
#6

Именно так я и делаю.

А Буфер - то к теме относится лишь частично, т.к. есть области которые загоняются в буфер и делаются переменной. А потом заменяюьтся указанным выше методом.

C
На сайте с 28.01.2010
Offline
70
#7
Именно так я и делаю.

Ааа, а то я подумал у вас идут подряд str_replace с разными тегами.

Вообще ничего быстрее str_replace нету. Производительность шаблонизатора будет зависеть от других мест в коде.

PN
На сайте с 01.05.2008
Offline
113
#8

ПОнял. Спасибо. Значит так и делаю :)

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий