- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Что делать, если ваша email-рассылка попала в спам
10 распространенных причин и решений
Екатерина Ткаченко
В 2023 году Google заблокировал более 170 млн фальшивых отзывов на Картах
Это на 45% больше, чем в 2022 году
Оксана Мамчуева
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
ПРивет всем. Делаю Шаблонизатор. Вопрос по производительсности.
Как быстрее и менее нагрузочно сделать шаблонизатор?
Мой метод:
Наблон 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);
Вот такая вот логика. Вроде просто но правильно ли? Стоит ли так делатЬ? Нагрузка на сервер минимальаня или есть быстрее способы?
Лучший способ — это собрать все возможные варианты и замерить производительность на каком-нибудь большом тексте.
Или пойти еще более простым путем: найти обзор шаблонизаторов, выбрать самый быстрый и изучить его исходники.
Зачем вообще функции ob_*? Они каким боком к str_replace относятся? Если несколько замен то лучше strtr
Зачем вообще функции ob_*? Они каким боком к str_replace относятся? Если несколько замен то лучше strtr
Ну потому что есть просто выводимые данные, а есть через шаблон подключенный. И если через подключенный, то контент сначала загоняется в переменную $X и через реплейс выводит.
Зачем вообще функции ob_*? Они каким боком к str_replace относятся? Если несколько замен то лучше strtr
А кто сказал что они должны к str_replace относиться? Это функции работы с буфером.
Prosto_niki , если не разбираетесь в шаблонизаторах, то используйте нативные шаблоны чтоб не заморачиваться.
ПРямо в цикле в конце перезаписываем значения {TITLE}, {TEXT}
Именно так я и делаю.
А Буфер - то к теме относится лишь частично, т.к. есть области которые загоняются в буфер и делаются переменной. А потом заменяюьтся указанным выше методом.
Ааа, а то я подумал у вас идут подряд str_replace с разными тегами.
Вообще ничего быстрее str_replace нету. Производительность шаблонизатора будет зависеть от других мест в коде.
ПОнял. Спасибо. Значит так и делаю :)