【问题标题】:Mojolicious generates two responses for one requestMojolicious 为一个请求生成两个响应
【发布时间】:2016-02-01 01:49:23
【问题描述】:

当路由回调花费太长时间时,mojolicious 似乎会请求该路由两次,例如在此应用中:

#!/usr/bin/env perl
use Mojolicious::Lite;

get '/' => sub {
  my $c = shift;
  $c->render_later;

  sleep(15);
  say "got here";
  $c->render(template => 'index');
};

当我请求一次“/”路由时,这就是我在日志中得到的:

[Sun Jan 31 20:53:17 2016] [debug] Your secret passphrase needs to be changed
[Sun Jan 31 20:53:17 2016] [debug] GET "/"
[Sun Jan 31 20:53:17 2016] [debug] Routing to a callback
got here
[Sun Jan 31 20:53:32 2016] [debug] Rendering template "index.html.ep" from DATA section
[Sun Jan 31 20:53:32 2016] [debug] Rendering template "layouts/default.html.ep" from DATA section
[Sun Jan 31 20:53:32 2016] [debug] 200 OK (15.007044s, 0.067/s)
[Sun Jan 31 20:53:32 2016] [debug] GET "/"
[Sun Jan 31 20:53:32 2016] [debug] Routing to a callback
got here
[Sun Jan 31 20:53:47 2016] [debug] Rendering cached template "index.html.ep" from DATA section
[Sun Jan 31 20:53:47 2016] [debug] Rendering cached template "layouts/default.html.ep" from DATA section
[Sun Jan 31 20:53:47 2016] [debug] 200 OK (15.005030s, 0.067/s)

所以我等了两次,我注意到了这一点,因为我有一个必须下载 XML 和提取信息的应用程序,而且它需要很长时间。

【问题讨论】:

  • 您确定不是您的浏览器发出了额外的请求吗?

标签: perl mojolicious


【解决方案1】:

正如duskwuff 已经提到的,这似乎是一个浏览器问题。使用上述文件并附加一个“app->start”,我可以使用 Mojolicious 6.14 和 Chrome 48 重现它。但使用 Firefox 44,只有一个请求。

似乎 Chrome 开发人员已经将典型的用户行为作为默认值,即当网站花费太长时间时敲击“重新加载”。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-06-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多