2014-10-29 2 views
3

Я разрабатываю веб-приложение с Mojolicious. Сервер разработки morbo - замечательная вещь, которая отлично работает, но как только я начну возвращать сложные хэши в стеке, а затем создавая веб-страницу, сервер morbo начнет действовать смешно. В моем браузере, если я перейду к одной из тех веб-страниц, которые используют сложный хэш, браузер скажет мне, что соединение было сброшено. Я должен обновить примерно 10-12 раз до загрузки страницы.Сервер Morbo работает только после постоянного обновления

Например:

Приведенный ниже код показывает один из моих контроллеров приложений. Он просто получает объект json из запроса AJAX, а затем возвращает другой объект 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

Это не похоже на проблему в вашем коде. Проверьте журналы на стороне сервера, если вы найдете там что-нибудь интересное, обновите вопрос. Может ли это просто поразить пределы памяти (особенно если вы запустите сервер на VPS)? – afenster

+0

Да, я посмотрю, что я могу найти. Есть ли у вас рекомендации относительно того, где я могу найти эти журналы? – fluke4

+1

Поведение браузера, которое вы описываете, похоже на цикл перенаправления. – harvey

ответ

2

Я понял, что проблема! Это было проблемой для меня уже более месяца, и я очень рад, что он снова работает. Моя проблема заключалась в том, что, когда я начал сервер разработки Морба, я использовал следующую команду:

morbo -w ~/web_dev/my_app script/my_app 

-w позволяет мне смотреть каталог для изменений, так что я не должен перезапустить приложение каждый раз, когда я изменил некоторые из моих файлов JavaScript. Моя проблема заключалась в том, что в каталоге, который я смотрел, также содержались файлы журнала. Поэтому каждый раз, когда я посещаю веб-страницу, журналы меняются, и сервер перезагружается.

Смежные вопросы