我目前正在使用 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
中的调试记录显示“渲染缓存模板”而不是正常的“渲染模板”,并且我对模板的新更改不再出现在浏览器中。我找不到一种可靠的方法来阻止这种情况,尽管它最终会根据我无法辨别的条件自行停止。如何可靠地使应用程序通知模板更改?或者,如何完全禁用模板缓存?
最佳答案
How can I make the app notice template changes reliably?
这就是 morbo 开发服务器的用途。 Morbo 不会用于您的实时代码部署,而是用于您不断更改代码和模板的开发环境。通常,对实时代码和模板的更改旨在通过重新启动应用程序服务器或在您的情况下重新启动 Apache 来处理。 ( Hypnotoad 为此具有热重启功能)
Alternatively, how can I disable template caching completely?
为此,请添加以下设置代码(在路由之外,在
use Mojolicious::Lite
之后):app->renderer->cache->max_keys(0);
关于apache - Mojolicious 模板缓存已过时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41750243/