我正在使用Mojolicious开发一个Web应用程序。 morbo开发服务器是一个非常棒的工作,但是一旦我开始在堆栈上返回复杂的哈希值然后渲染网页,那么morbo服务器将开始变得有趣。在我的浏览器中,如果我导航到其中一个使用复杂哈希的网页,浏览器会告诉我连接已被重置。在页面加载之前,我必须刷新大约10-12次。
例如:
下面的代码显示了我的一个app控制器。它只是从AJAX请求中获取一个json对象,然后返回一个不同的json对象。它工作正常,除了浏览器要求在加载之前刷新一千次。
package MyApp::Controller::Library;
use Mojo::Base 'Mojolicious::Controller';
use Mojo::Asset::File;
use MyApp::Model::Generate;
use MyApp::Model::Database;
use MyApp::Model::IpDatabase;
use Mojo::JSON qw(decode_json);
# Receives a json object from an AJAX request and
# sends the necessary information back to be
# displayed in a table.
sub list_ajax_catch {
my $self = shift;
my $json = $self->param('data');
my $input = decode_json $json;
$self->render(
json => {
"Object A" => {
"name" => "Object A's Name",
"description" => "A Description for Object A",
"height" => "10",
"width" => "5",
}
}
);
}
1;
问题不仅限于此实例。似乎任何时候服务器上都有很多处理,浏览器有重置的麻烦。浏览器是什么并不重要,我尝试过使用Chrome,IE,Firefox和其他浏览器(在多台计算机上)。如果我甚至没有从html到应用程序来回发送或接收数据,那也没关系。所有似乎触发它的是,如果我的网络应用程序中有任何处理量不仅仅是渲染模板,但是如果我正在运行Hypnotoad,一切都很好。
这个例子不是一个需要大量处理的例子,但它确实会导致浏览器重置,正如你所看到的,它不会花费很长时间来运行或冻结任何东西。我认为问题是超时问题,但默认情况下,超时不会发生在15秒之后,所以它不可能。
答案 0 :(得分:2)
我已经找到了问题!这对我来说已经存在了一个多月的问题,我很高兴再次工作。我的问题是,当我启动morbo开发服务器时,我使用了以下命令:
morbo -w ~/web_dev/my_app script/my_app
-w允许我查看目录以进行更改,这样我每次更改一些JavaScript文件时都不必重新启动应用程序。我的问题是我观看的目录还包含我的日志文件。所以每次我访问我的网页时,日志都会改变,服务器会重新启动。