Они также используют поддержку прямого включения шаблонов вместо использования маркеров. Выбор между этими системами шаблонов в основном является предметом личного выбора. Критерием предпочтения может быть синтаксис системы. Так, система TemplatePower считается в шесть раз более быстрой, чем система FastTemplate. Естественно, лучше всего воспользоваться шаблонным классом PHPLib.
В результате использования дополнительного уровня, хранящего раздельно коды HTML и PHP, получаем выигрыш в производительности. Загрузка каждой страницы требует анализа шаблонов и заполнения значений, полученных для маркеров. Это может существенно повлиять на время, необходимое для сборки страницы. Некоторые данные необходимо регенерировать при каждом запросе, как, например, содержимое покупательской корзины, но большая часть информации на Web-узле является статической. Таким образом, при кэшировании проанализированных шаблонов мы экономим массу времени.
Кэш-память - это временная быстрая память, объем которой ограничен, а данные, которые размещаются в ней, являются временными. Применение кэш-памяти опирается на идею, что текущий запрос данных предполагает другой такой запрос аналогичных данных в ближайшем будущем. Если приложение ведет себя таким образом и объема кэш-памяти достаточно, ее использование позволит существенно повысить производительность.
Класс cachedFastTemplate добавляет в первоначальную реализацию PHP FastTemplate использование кэширования. Два новых метода позволяют осуществить чтение и запись в текстовые файлы, сохраненные в каталоге /tmp. Метод write_cache сохраняет полностью проанализированные шаблоны в каталоге, указанном после имени узла Web-сервера. Метод is_cached загружает содержимое из каталога, если шаблон прежде подвергался кэшированию. Предназначение этого класса заключается в том, что он является точечным замещением первоначального класса. При этом не надо модифицировать ваши шаблоны. Изменения, которые необходимо внести в PHP-сценарии, являются минимальными и будут работать даже без модификации, но не будут кэшироваться.
Существуют и другие шаблонные системы, использующие кэширование, но про­мышленным решением является система Smarty, компилирующая шаблоны в исходный PHP-код. Файл шаблонов, отредактированный разработчиками интерфейса, анализируется только один раз. Вызовы шаблонов заставляют машину PHP запустить файл .php. Это снижает нагрузку, вызванную запуском анализатора, написанного на PHP.
Компиляция сценариев происходит во время выполнения сценария при отсутствии непосредственных команд в сценарии. Если со страницы делается запрос еще неоткомпилированного шаблона, Smarty компилирует его. А если в шаблон вносятся изменения после этой компиляции, Smarty перекомпилирует его во время следующего вызова этого шаблона.
Дополнительно система Smarty снабжена возможностью кэширования, увеличивающей производительность статических страниц. Для страниц со статическим содержимым Smarty преобразует шаблон в текстовый файл. Как и в случае с другими статическими реализациями, здесь можно задавать срок хранения, после которого файл регенерируется. Шаблонная система Smarty предполагает более чем простое замещение маркеров и включает также усовершенствованную логику управления наподобие операторов "if-else". Это позволяет разработчикам интерфейсов принимать простейшие логические решения, не беспокоя при этом программистов. Эта система также включает сопровождение циклов и функций, предназначенных для включения других шаблонов.
Шаблонные системы хорошо подходят для определенной категории людей, иначе они бы не приобрели такую популярность. Система FastTemplate отличается простотой, и, конечно же, любой, имеющий опыт работы с HTML-кодом, всегда сможет организовать работу с маркерами. Такие сложные решения, как Smarty, ненамного отличаются от PHP по сложности, но это не дает повода усомниться в пользе данной системы. Этот подход, конечно, может понравиться многим программистам, и внимательное общение с новичками позволит им избегать работы с более сложным синтаксисом.
Большинство из этих шаблонных систем в качестве маркера определенного значения, которое будет позднее замещено PHP-сценарием, использует {name}. Ненамного сложнее написать <?php=$name?>. Наибольшим недостатком использования тегов PHP является то, что они визуально не отображаются в браузерах, которые считают их нераспознанными тегами.