Morbo服务器仅在不断刷新后才能工作

时间:2014-10-29 16:59:54

标签: ajax perl mojolicious

我正在使用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秒之后,所以它不可能。

1 个答案:

答案 0 :(得分:2)

我已经找到了问题!这对我来说已经存在了一个多月的问题,我很高兴再次工作。我的问题是,当我启动morbo开发服务器时,我使用了以下命令:

morbo -w ~/web_dev/my_app script/my_app

-w允许我查看目录以进行更改,这样我每次更改一些JavaScript文件时都不必重新启动应用程序。我的问题是我观看的目录还包含我的日志文件。所以每次我访问我的网页时,日志都会改变,服务器会重新启动。