От Smarty 3 до Twig 2, как управляются вхождения шаблона? - PullRequest
0 голосов
/ 20 октября 2019

Я использую Smarty 3 на нескольких сайтах и ​​проверяю, как работает веточка. Есть одна вещь, которую я не понимаю в Twig по сравнению со Smarty: как управляются экземпляры одного и того же шаблона.

В Smarty сначала вы создаете кэш шаблона с именем шаблона и идентификатором кеша для вашего конкретногостраница для этого шаблона

$template = $smarty->createTemplate('article.tpl', 'article|12');

Это создаст кэшированную страницу.

Чтобы отобразить результат в Smarty, вы сначала проверяете, существует ли страница в кэше, а затем предоставляете ей другой доступ к базе данных. для извлечения данных и назначения переменных.

if (!$template->isCached()) {
   // access to the database
   // assign variables
}

Затем страница отображается

$tpl->display();

Но в Twig я просто вижу

$loader = new \Twig\Loader\FilesystemLoader('/path/to/templates');
$twig = new \Twig\Environment($loader, ['cache' => 
    '/path/to/compilation_cache']);
$template = $twig->load('index.html');
echo $template->render(['the' => 'variables', 'go' => 'here']);

Что эквивалентно"! $ template-> isCached ()", чтобы каждый раз избегать доступа к базе данных?

1 Ответ

0 голосов
/ 20 октября 2019

Нет ни одного. Twig не кэширует визуализированный вывод HTML самостоятельно. Он только кэширует результат компиляции шаблона в PHP-код, который выполняется каждый раз при рендеринге шаблона.

Вам потребуется обратный прокси-сервер перед вашим приложением или какой-то слой кэширования базы данных, чтобы избежатьповторные звонки в ваше приложение.

...