Какой шаблонизатор использовать. PHP, XSLT
Как бы не говнились программисты 1С:Битрикс, как бы не писали ужасные статьи, что XSLT – это сложно, страшно, тормознуто и вообще ужас какой-то, XSLT имеет право на существование, во всяком случае Я так считаю. И у меня на это несколько причин.
1. Абстрагирование от логики. Достаточно просто описать XML, который мы будем выдавать, чтобы правильно написать XSL-файл. Главное не вносить в XSL какую-то логику. Единственное, что Я позволяю выбирать в XSL стилях – это какой класс будет у элемента, если @a = 1. Ну что-то в таком духе.
2. Более понятное и наглядное представление. Кому как, а мне XSL шаблон нравится гораздо больше, чем мешанина из HTML и PHP, которая возникает при использовании PHP-шаблонизаторов или ещё хуже, при выводе HTML прямо из логики.
3. Скорость работы. Я проверил на простых примерах, что работает быстрее. Скачать примеры PHP и XSLT можно внизу страницы.
Результат этих тестов такой:
Проверка времени выполнения прямого вывода из PHP за 1000 операций.
Прямой вывод работал: 0.0025558471679688
Проверка времени выполения с использованием подключаемого файла.
Вывод через файл отработал работал: 0.13970184326172
Вывод с использованием XSLT.
Вывод с использованием XSLT работал: 0.025261878967285
Прямой вывод как обычно побеждает. Но у него огромный недостаток – код становится нечитабельным. И попытки что-то изменить могут привести к неожиданным результатам.
На втором месте – XSLT. Он в 10 раз медленнее прямого вывода, но в 5,5 раз быстрее вывода с использованием подключения файла шаблона в цикле. В принципе, есть вариант, когда мы выносим цикл в подключаемый, но это сводится к выводу из PHP. Поэтому Я 1000 раз подключаю файл шаблона. :) И кстати, в примере с XSLT учитывается время создания XML, тогда как с PHP мы уже сразу выводим. Если будет готовая XML – время ещё уменьшится.
И подключение файла шаблона оказывается на третьем месте.
Smarty Я не рассматривал, может быть в следующий раз, когда у меня будет время написать более сложные примеры.
Smarty ужасен. Стоит его забыть как страшный сон :)
XSLT кстати имеет много полюсов — умным браузерам, напр, можно отдавать xml-ину со ссылкой на стиль — они сами распарсят. + самое долгое — это парсинг стиля. если его как-либо закешировать между вызовами, то можно еще заздорово ускорить выдачу
ну не обязательно умные. Это, вроде, если мне память не изменяет, и ослик 6-ой умел.
ослик тоже иногда бывает умным :D
вот только если в хмл-ине будет доктайп, он по нему пойдет и заддосит сервак w3c :D
но есть и тупые браузеры, например Arora. да и все, использующие QtWebkit
+ из поисковиков это понимал только яху, пока не закрылся
кто-то пользуется Агогой кроме Дениса Попова? :)
не знаю насчет webkit’a не проверял.
а поповоду индексации – какая разница, что индексровать, если на выходе все равно html?
Google отлично индеесирует я.ру, к примеру.
> не знаю насчет webkit’a не проверял
сафари, хром и даже вроде мидори — норм
> какая разница, что индексровать, если на выходе все равно html?
client-side xslt поисковики не выполняют. у яндекса server-side, как у тебя в статье
Ну так там же текст. Я думаю он и его заиндексирует
за 3 года конечно могло всё круто измениться, но 3 года назад индексировал нормально только Яху + как ты сказал индексировал Гугл. остальные тупо игнорили
перепроверил: ничего не изменилось, кроме исчезновения движков рамблера и яху
http://sunchaser.info/category/it/xml