Rails 3 медленный частичный рендеринг - PullRequest
3 голосов
/ 26 марта 2011

Первый код:

# matches/index.html.haml
%ul.match_list
- @matches.each do |match|
  %li
    =render match
# matches/_match.html.haml
%li
  =match.id
Completed 200 OK in 665ms (Views: 496.3ms | ActiveRecord: 142.1ms)

Медленно, как ад.

Второй код:

# matches/index.html.haml
%ul.match_list
- @matches.each do |match|
  %li
    =match.id
Completed 200 OK in 196ms (Views: 30.0ms | ActiveRecord: 134.6ms)

Намного лучше.

Почему это намного быстрее, если не использовать частичное?

1 Ответ

9 голосов
/ 26 марта 2011

Вы работаете в режиме разработки?Я не знаю внутреннюю работу Rails, но я знаю, что он кэширует код представления в производственной среде, тогда как он перечитывает файл в процессе разработки.Было бы хорошо, если бы он кешировал представление на время запроса, но это может и не произойти, и это может быть проблемой.

Кроме того, вместо циклического повторения совпадений, попробуйте дать следующий поворот:

= render @matches

Это определенно более кратко, и, если проблема заключается в повторном чтении файла, вполне возможно, что Rails может оптимизировать этот процесс, если узнает, что вы собираетесь зацикливаться.

...