Как ускорить страницу с 45+ запросами - PullRequest
3 голосов
/ 21 сентября 2010

Как вы будете обрабатывать сложную веб-страницу, где вы должны отобразить одну учетную запись пользователя с большим количеством связей (15+)

Данные перевода хранятся в отдельных таблицах (globalize2 / 3), поэтому запросы повышаются30 +.

Устанавливая ACL и некоторые записи, и вы получите 45+ запросов, иногда 65 +

Я не хочу разбивать страницу на несколько экранов, все данные требуются на одном экране.

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

Я пытался использовать memcached, но он был медленным, потому что каждый объект должен быть сериализован / десериализован при каждом запросе.

Каков наилучший способ обработки таких страниц?

Ответы [ 3 ]

3 голосов
/ 21 сентября 2010

Если у вас есть одна модель с кучей взаимосвязей, то стремительная загрузка с помощью «include» должна значительно помочь вам.В Rails 2.3 это работает примерно так:

User.find(1, :include => [:relationship1, :relationship2, :relationship2])
0 голосов
/ 28 октября 2010

Другим способом может быть сохранение коллекций в браузере клиента

http://www.gudasoft.com/english/development/rails-development/10/28/1342/store-data-in-the-browser-with-rails-and-jquery/2010

0 голосов
/ 21 сентября 2010

Согласен, опция "включить" для ActiveRecord должна сильно помочь.Однако не забывайте, что вы также можете вкладывать ассоциации.Например, допустим, у вас есть следующие настройки.

User
 - Blog
   - Posts
     - Comments
 - Images
   - Comments
 - Videos
   - EncodedVideos

В ActiveRecord можно настроить следующие параметры:

<code>
User.find(:all, :include => {:user => [{:blog => {:posts => :comments}}, {:images => :comments}, {:videos => :encoded_videos}]})

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...