Reputation: 768
When a route callback takes too long mojolicious seems to request that route twice for example in this app:
#!/usr/bin/env perl
use Mojolicious::Lite;
get '/' => sub {
my $c = shift;
$c->render_later;
sleep(15);
say "got here";
$c->render(template => 'index');
};
When I request the "/" route ONCE this is what I get in the logs:
[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)
So I wait twice the time, I noticed this because I have an app that has to download XML and extract information and it was taking forever.
Upvotes: 1
Views: 216
Reputation: 935
As duskwuff mentioned already, it seems to be a browser issue. With the above file and an "app->start" appended, I can reproduce it with Mojolicious 6.14 and Chrome 48. Using Firefox 44, there is only one request though.
Seems like the Chrome devs make the typical user behavior of hammering "reload" when a site takes too long the default already.
Upvotes: 1