2014-12-24 5 views
4

Я недавно обновил одно из своих приложений до Rails 4.2. При запуске на моем локальном компьютере я заметил, что простой link_to для основного действия шоу иногда занимает очень много времени.Rails 4.2 - проблема с производительностью

Вот ссылка:

= link_to team_members_path(@team) do 
    Members 

Вот мое действие (в моем MembersController):

def index 

    @team = Team.find_by_id(params[:team_id]) 

    if params[:search].present? 
    @members = Member.search ThinkingSphinx::Query.escape(params[:search]), :with => {:team_id => @team.id}, :page => params[:page], :per_page => 10 
    else 
    @members = Member.search params[:search], :with => {:team_id => @team.id}, :page => params[:page], :per_page => 10 
    end 
end 

Я использую Sphinx и ThinkingSphinx для поиска. При нажатии ссылки я получаю необычный длинный «журнал» на моей консоли.

Started GET "https://stackoverflow.com/users/1" for ::1 at 2014-12-24 11:24:40 +0100 
Processing by UsersController#show as JS 
Parameters: {"id"=>"1"} 
[renders stuff etc] 

... 

Started GET "https://stackoverflow.com/users/1" for ::1 at 2014-12-24 11:24:40 +0100 
Processing by UsersController#show as JS 
Parameters: {"id"=>"1"} 
[renders stuff etc. with the same timestamp as above] 

... 

Started GET "https://stackoverflow.com/users/1" for ::1 at 2014-12-24 11:24:40 +0100 
Processing by UsersController#show as JS 
Parameters: {"id"=>"1"} 
[renders stuff etc. with the same timestamp as above] 

Это действие: Started GET "https://stackoverflow.com/users/1" кажется, дозвонился несколько раз, как вы можете видеть выше (намного больше, чем то, что я вставил выше), который, кажется, приводит к довольно плохой производительности, даже при работе на моей локальной машине.

И я не совсем уверен, как я могу это решить или что его вызывает. Есть идеи?

Примечание

Я на самом деле не знаю, почему GET "https://stackoverflow.com/users/1" дозвонились вообще в этом случае. Я не привязываюсь к действию show users.

Я проверил его с помощью консоли Firefox. Смотрите рисунок ниже:

enter image description here

+1

Похож на драгоценный камень turbolinks, который был представлен с Rails 4, что вызвало проблему, поскольку я могу видеть многие запросы js. Попробуйте посмотреть прямо сейчас, а не http: // localhost: 3000/users/1. Вы можете удалить турбонасосы, если это вызовет проблемы, связанные с улучшением производительности. –

+0

http://stackoverflow.com/questions/18068951/rails-4-turbolinks-make-form-submit-multiple-times могут помочь вам. –

+0

Привет, спасибо. Я пытался отключить turolinks следующим образом: '' data-turbolinks-track '=> false', но у меня все еще такая же проблема. Любые другие идеи? На самом деле я не знаю, почему 'GET '/ users/1" 'вызывается вообще в этом случае. Я не привязываюсь к действию show users. – Anders

ответ

1

Проблема, казалось, с моим инлайн Javascript, что я имел в частичной форме (_form.html.haml). Эта форма отображается на большинстве страниц, поскольку она помещается в модальное окно Bootstrap и может быть представлена ​​в любом месте. В этой частичной части я выполняю несколько звонков Javascript и Ajax. Каждый раз, когда форма оказывается я выполнил это действие с помощью Ajax:

:javascript 
    $(document).ready(function() { 

    $.ajax({ 
    url: "#{update_idea_team_path}", 
    data: { 
     team_id : $('#select_idea_team').val() 
    }, 
    dataType: "script" 
    }); 

По какой-то причине это, казалось, вызвать проблемы, описанной в моем вопросе выше. Перемещение кода Javascript и Ajax в файл .coffee.js вместо того, чтобы отображать его встроенный, решило проблему для меня.

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