我想知道是否有可能为每个{filename}.html.twig
生成{filename}.html
?我知道一个解决方案是从浏览器复制和粘贴源代码,但是有没有更有效的方法呢?生成相当于一个树枝文件的HTML模板?
预先感谢您。
我想知道是否有可能为每个{filename}.html.twig
生成{filename}.html
?我知道一个解决方案是从浏览器复制和粘贴源代码,但是有没有更有效的方法呢?生成相当于一个树枝文件的HTML模板?
预先感谢您。
我认为这样的解决方案可以满足您的需求。
curl www.yoururl.com > /path/to/yourfolder/file.html
看看下面的故事看看,如果你有兴趣。
故事
几个月前,我在做一个项目yii2。由于来自外部服务的响应,索引页面在3秒内加载。 Cloudflare和其他缓存方案没有成功 - 我想出了最好的2.5秒。
经过2-3天的思考期,我发现了一个讨厌的解决方案:) 创建一个无缓存,新版本的主页并写了一个crone作业,以获取该页面的内容并写入index.html每2分钟公开一次(在yii2 web
)文件夹内。
其他网页没问题 - (< 0.2s),所以没有为他们写任何东西。
所有我做过,是
curl www.example.com > /path/to/web/index.html
如果你想与每个渲染自动创建这些文件,那么我建议覆盖默认渲染Twig_Environment
的方法,并创建自定义类的一个实例来初始化嫩枝
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');
我在哪里创建实例? (非常新的树枝)@DarkBee –
你使用'树枝'独立或'symfony',''silex',...? – DarkBee
要缓存的树枝输出? – DarkBee
是的,你的措辞比我可以更好@DarkBee –