Я хотел бы знать, возможно ли сгенерировать {filename}.html
для каждого {filename}.html.twig
? Я знаю, что одно из решений — скопировать и вставить исходный код из браузера, но есть ли более эффективный способ сделать это?
Заранее спасибо.
Я хотел бы знать, возможно ли сгенерировать {filename}.html
для каждого {filename}.html.twig
? Я знаю, что одно из решений — скопировать и вставить исходный код из браузера, но есть ли более эффективный способ сделать это?
Заранее спасибо.
Такое решение, я думаю, удовлетворит ваши потребности.
curl www.yoururl.com > /path/to/yourfolder/file.html
Посмотрите ниже историю, если вы заинтересованы в.
История
Несколько месяцев назад я работал над проектом yii2. Страница индекса загружалась через 3 секунды из-за ответа от внешних служб. Cloudflare и другие сценарии кэширования не увенчались успехом — я придумал 2,5 секунды лучше всего.
После 2-3 дней размышлений я нашел неприятное решение :) Создал свежую версию домашней страницы без кеша и написал задание крона, чтобы получить содержимое этой страницы и записать в файл index.html внутри общедоступного (в yii2 web
) каждые 2 минуты.
Остальные страницы были в порядке - (‹0.2s), так что ничего для них не писал.
Все, что я сделал, было
curl www.example.com > /path/to/web/index.html
Если вы хотите создавать этот файл автоматически при каждом рендеринге, я предлагаю перезаписать метод рендеринга по умолчанию для Twig_Environment
и создать экземпляр вашего пользовательского класса для инициализации Twig.
class MyTwigEnvironment extends \Twig_Environment {
public function render($name, array $context = array())
{
$html = $this->loadTemplate($name)->render($context, $site_id);
file_put_contents('path/to/cache/folder'.$name.'.twig', $html);
chmod('path/to/cache/folder'.$name.'.twig', 0664);
return $html;
}
}
$twig = new MyTwigEnvironment($loader, $options);
echo $twig->render('some_template.html');
twig
отдельно или с symfony
, silex
, ...?
- person DarkBee; 29.07.2016