Создать HTML-шаблон, эквивалентный файлу ветки?

Я хотел бы знать, возможно ли сгенерировать {filename}.html для каждого {filename}.html.twig? Я знаю, что одно из решений — скопировать и вставить исходный код из браузера, но есть ли более эффективный способ сделать это?

Заранее спасибо.


person Meers E. Chahine    schedule 28.07.2016    source источник
comment
Вы хотите кэшировать вывод ветки?   -  person DarkBee    schedule 28.07.2016
comment
Да, ты сформулировал это лучше, чем я @DarkBee   -  person Meers E. Chahine    schedule 28.07.2016


Ответы (2)


Такое решение, я думаю, удовлетворит ваши потребности.

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

person marmeladze    schedule 28.07.2016

Если вы хотите создавать этот файл автоматически при каждом рендеринге, я предлагаю перезаписать метод рендеринга по умолчанию для 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');
person DarkBee    schedule 28.07.2016
comment
Где бы я создал экземпляр? (Очень плохо знаком с веткой) @DarkBee - person Meers E. Chahine; 29.07.2016
comment
Вы используете twig отдельно или с symfony, silex, ...? - person DarkBee; 29.07.2016