我目前正在使用Mojolicious开发一个小型单页Web应用程序.该应用程序有一个Javascript前端(使用Backbone)与REST-ish API对话; 源的布局大致是:
use Mojolicious::Lite; # ... setup code ... get '/' => sub { my $c = shift; # fetch+stash data for bootstrapped collections... $c->render('app_template'); }; get '/api_endpoint' => sub { my $c = shift; # fetch appropriate API data... $c->render(json => $response); }; # ... more API endpoints ... app->start;
应用程序模板使用EP,但非常简单; 唯一的服务器端模板指令只是为引导的集合插入JSON.它通过Apache作为普通的CGI脚本部署.(这不是最佳选择,但它适用于低流量内部使用,更复杂的服务器配置在上下文中存在问题.)Perl CGI通过配置mod_perl
.
这在大多数情况下都有效,但偶尔渲染器会以某种方式获得它应该缓存模板并忽略对它的更改的想法.调试记录error_log
显示"渲染缓存模板"而不是普通的"渲染模板",我对模板的新更改停止显示在浏览器中.我找不到一种可靠的方法来阻止它,尽管它最终会根据我无法辨别的条件自行停止.
如何使应用程序通知模板可靠地更改?或者,如何完全禁用模板缓存?
如何使应用程序通知模板可靠地更改?
这就是morbo开发服务器的用途.Morbo不会用于您的实时代码部署,而是用于您不断更改代码和模板的开发环境.通常,对实时代码和模板的更改应通过重新启动应用程序服务器或Apache来处理.(Hypnotoad具有用于此目的的热重启功能)
或者,如何完全禁用模板缓存?
为此,请添加以下设置代码(在路线之外,之后use Mojolicious::Lite
):
app->renderer->cache->max_keys(0);