Вызов метода Smarties display () несколько раз по сравнению с использованием include - PullRequest
2 голосов
/ 05 ноября 2011

Какой метод объединения шаблонных частей моего сайта является наилучшей практикой? Я предпочитаю первое решение, но я не уверен, что использование нескольких вызовов для display () - хорошая практика. Я ищу простоту обслуживания и скорость.

<?php
$smarty->display('header.tpl');
$smarty->display('menu.tpl');
$smarty->display('article1.tpl');
$smarty->display('footer.tpl');
?>

или отображение одного шаблона smarty, а затем внутри шаблона, имеющего

{include file="header.tpl"}
<body id={$pageid}>
{include file="menu.tpl"}
{include file="header_inner.tpl"}

Content of page

{include file="footer.tpl"}

1 Ответ

7 голосов
/ 05 ноября 2011

Если вы используете Smarty3 (что вам следует), посмотрите на Наследование и Шаблон наследования .Он позволяет вам определять шаблоны так же, как вы строите свои классы - стиль ООП.

Если вы не можете (или не хотите) катиться с TI, я бы предложил подход {include},Основания:

  1. Сокращение API между PHP и шаблонами
  2. позволяет кэшировать вывод более простым способом
  3. позволяет $ cache_modified_check для базовой HTTP 304 Not Modified обработки прямо из коробки
  4. можно оптимизировать (с помощью Smarty3) до {include… inline} , чтобы уменьшить количество операций ввода-вывода файловой системы
  5. canбыть в целом оптимизирован (Smarty3) через $ merge_compiled_include (все еще уменьшая ввод / вывод файловой системы)

Есть (только) одно преимущество нескольких вызовов display ().Вы можете отправить данные в браузер кусками.Таким образом, вы можете очистить браузер до того, как ваш будет обработан.Это позволяет браузеру извлекать (блокировать) ресурсы, такие как сценарии и CSS, еще до того, как он получил весь документ.(«Конвейерная загрузка документов»)

Что касается удобства обслуживания, я использую подходы TI и {include}.Никогда не вызывайте несколько вызовов ().Мне бы пришлось трогать слишком много сценариев, если что-то изменилось.

...