apache - Mojolicious 模板缓存已过时

标签 apache perl mojolicious mod-perl

我目前正在使用 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/

相关文章:

jquery - 如何在drupal本地网站上显示css

php - 随机无法通过socket连接到本地MySQL服务器

javascript - 爬行受密码保护的弹出网站

regex - 在正则表达式中遍历字符串两次

json - Perl 无法加载 SSLeay.dll,因为未安装 LWP::Protocol::https

json - 在 Perl Mojolicious 中渲染 JSON 时防止转义字符

php - 如何使用我的 Tomcat 配置 PHP

Apache Directory Studio 未打开

linux - 文件的权限不会更改为我想要的权限

perl - 如何使用 Mojolicious 上传多个文件?