Php Шаблонизатор недостатки
Вот и добрались к php шаблонизаторам. Шаблонизаторы - это огромные и тяжёлые библиотеки, написаны на ООП и нужны для простых людей, которые не умеют разрабатывать индивидуальную архитектуру (ядно) проекта, поэтому и расхваляют шаблонизаторы. Если идти на поводу, как пёсик, слушая других многих "программистов", то все они утверждают, что это очень круто. Да не только круто, а й необходимо!
Если искать в интернете статейки и спрашивать других о подводных камнях и недостатках шаблонизаторов - правды Вам никто не скажет, по одной причине: никто не знает и не задумывался, какое безумие эти php-шаблонизаторы. Никто не тестировал, какую нагрузку берет на себя ЦП сервера, обрабатывая даже одного пользователя
Цель этой статьи раскрыть все "подводные" камни и ложь шаблонизаторов.
Шаблонизаторов в интернете очень много, их используют много CMS-систем, фреймворков, но есть и самые возлюбленные. Все шаблонизаторы работают одинаково и отчитаются своими конструкциями. Если верить документации, то Smarty - один из лёгких и быстроработающих шаблонизаторов. Давайте разбирать причины, почему от шаблонизаторов нужно срочно отказываться и почему у большинство веб-студий сайты тормозят.
- Очень много весят библиотеки шаблонизаторов. Вес Smarty равен 1,08 МБ.
- Любой шаблонизатор создает кэш файлы. Эти файлы так же имеют немалый вес и находятся в одной папке. На каждый вывод определённого куска кода уже есть по 2 файла кэша, что создает сильную нагрузку на сервер, поскольку файлов в одной папке много, при этом не предусмотрена разбивка по папкам.
- Время интерпретации сайта, использующего самый быстрый шаблонизатор равен 0.022001028060913 сек. Это выполнение простенькой задачи (вывод массива на 3 статьи), что проигрывает чистому коду в 22 раза (0.00099992752075195 сек).
- За счет множества подключаемых тяжёлый библиотек шаблонизатора, написанных на ООП, "сьедает" оперативной памяти сервера, для обработки только одного пользователя 461960 байт. Это в 125 раз больше, против чистого и качественного кода (3688 байт).
Я с ужасом представляю, если выводить весь более-менее полноценный сайт шаблонизатором, то уже сколько на это времени понадобится и оперативки. Это Вам не вывод 3-х статей из массива, как было протестировано ради этой статьи.
Теперь разберёмся, почему шаблонизаторы так тормозят. Дело в том, чтобы вызвать цикл foreach, к примеру, нужно создать tpl-файл и написать в нём код цикла на языке шаблонизатора. Это выглядит так:
{foreach item=posts from=$data.posts}
<div class="blok">
<h2>{$posts.title}</h2>
<div class="avtor">автор: {$posts.avtor}</div>
<div class="text">
{$posts.text}
</div>
</div><hr>
{foreachelse}
Новостей нет
{/foreach}
Вторым этапом необходимо подключить эти бессмысленные и тяжелейшие библиотеки, которые этот код обработают и всё-равно вызовут цикл foreach, который пройдётся по массиву. А не проще, выбросить этот весь безумный мусор, отформатировать мозг от этих шаблонизаторов и просто написать цикл на php, который сразу пройдется по массиву и не будет вызывать какие-то шаблонизаторы и делать миллионы лишних движений?
<?php foreach($posts as $post){?>
<div class="blok">
<h2><?php echo $post['title'];?></h2>
<div class="avtor">автор: <?php echo $post['avtor'];?></div>
<div class="text">
<?php echo $post['text'];?>
</div>
</div><hr>
<?php }?>
И не надо никаких шаблонизаторов. Да и так же само можно отделить php-код от html-кода, нужен лишь опыт и мозги ;). Это касается не только циклов, но и условий, подключаемых файлов, всего остального:
Код шаблонизатора условия
{if $data.template=='item'}/*действия 1*/ {else}/*действия 2*/{/if}
Против чистого PHP
if($data['template']=='item'){/*действия 1*/}else{/*действия 2*/}
Код шаблонизатора на подключение файлов
{include file='post.tpl'}
Против чистого php
include 'post.tpl';
Это был только маленький пример. Эти коды должны обработаться библиотеками шаблонизатора и в итоге вызваться обычный код php. Разве не проще сразу php-код написать? Использовать шаблонизаторы - равносильно для датчика подключать ещё один датчик!
Я лишь одно скажу. Программист, который пишет на чистом коде, он прекрасно понимает, какая это всё лажа, а модераторы не смотрят на скорость работы сайта и не заботятся о качестве кода. Для них это нормально, что сайты тормозят, но объяснить причины, почему их и множество в интернете сайтов тормозят они не могут. Мною доказано, что шаблонизаторы - одна из причин затормаживания многих сайтов. Ведь 95% сайтов делают веб-студии, быстро "сбивая" деньги, а о скорости и качестве никто не думает.
Вот я и раскрыл все секреты и скрываемые стороны php шаблонизаторов и разоблачил их. Ведь никакая веб-студия не может сделать проект, который будет равняться по скорости проектам, которые были написаны программистом. Легче же установить готовые CMS-системы, фреймворки, шаблонизаторы, чем подходить к работе индивидуально.