Какой самый легкий способ загрузки результатов поиска через Rails? - PullRequest
1 голос
/ 17 февраля 2011

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

  1. Иногда результаты загружаются быстрее, если с ними загружаются другие вещи.

  2. Чем больше я могу избежать таблиц объединения, тем легче я могу нажать на базу данных.

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

All things Commented out = Completed in 554ms (View: 487, DB: 16)
All things loaded = Completed in 9093ms (View: 9008, DB: 37)

Изображение для поиска

.left.search_image_holder
  - if result.search_image.exists?
    = image_tag result.search_image.url(:thumb)
  - elsif result.logo.exists?
    = image_tag result.logo.url(:thumb)
  - else
    = image_tag 'search_image_default.jpg'

Completed in 5791ms (View: 5728, DB: 10)

Основная информация

.grid_3.omega
  %h1<
    = link_to truncate(result.name.titleize, :length => 30), organization_path(result.hq_url.blank? ? result : result.hq_url), :title => "Find out more about #{result.name} in #{result.city}"
  .clear
  %h3<
    =h result.city.titleize
  .clear
  .class7
    =h truncate(result.quick_description.titleize, :length => 60)
  .clear

Completed in 4158ms (View: 3979, DB: 16)

Иконки

.grid_4.omega.alpha
  .left{:style => 'margin-right: 12px; width: 40px'}
    - if result.contact_24
      = link_to image_tag('24hr-icon.png'), contact_organization_path(result), :title => "This local business or organization guarentees tocontact you within 24 hours"
    - else
      &nbsp;
  .left{:style => 'margin-right: 12px; width: 40px'}
    - if result.deals.count > 0
      = link_to image_tag('hq-card-icon.png'), view_organization_deals_path(result), :title => "This local business or organization features promotions, deals, or steals"
    - else
      &nbsp;
  .left{:style => 'margin-right: 12px; width: 40px'}
    - if result.video_count > 0
      = link_to image_tag('videos-icon.png'), organization_path(result.hq_url.blank? ? result : result.hq_url, :show_video => true), :title => "This local business or organization features a video"
    - else
      &nbsp;
  - if result.reviews.count > 0
    %a{:href => organization_reviews_path(result)}
      .left.star_rating_icon
        = result.rating
  .clear

Completed in 4125ms (View: 3929, DB: 36)

О тексте

.grid_4.omega.alpha{:style => 'height: 25px; overflow: hidden;'}
  %p<
    = truncate(sanitize(simple_format(result.about_us), :tags => ''), :length => 100).titleize

Completed in 4500ms (View: 4311, DB: 12)

1 Ответ

1 голос
/ 17 февраля 2011

Один из способов ускорить процесс - это предварительно рассчитать результаты

truncate(sanitize(simple_format(result.about_us), :tags => ''), :length => 100).titleize

Таким образом, ваш взгляд просто выплевывает текст / html. У вас есть метод before_save, который выполняет вышеперечисленное в другое поле.

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

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