Кеш счетчика Rails против вычисления - PullRequest
4 голосов
/ 05 августа 2009

У меня есть коллекция, для которой я хочу показать итоги, и идея состояла в том, чтобы использовать кеш для каждого из итогов, которые мне нужны. Однако мне также нужно будет углубиться в набор данных. Так что, скорее всего, мне все равно придется загружать коллекцию. Так я должен все еще использовать кеш или просто использовать вычисления?

Ответы [ 2 ]

4 голосов
/ 05 августа 2009

Как сказал Стивен ОДоннелл, «... зависит от размера коллекции». Однако вам также необходимо учитывать количество раз, которое вы будете выполнять этот расчет на страницу . Например, если вы работаете с приложением «Блог», а на странице записей / индекса показано 10 сообщений блога, каждое с «155 комментариями» внизу, это много вызовов базы данных, которых можно избежать с помощью счетчика кэша. *

Я предлагаю попробовать только с активным поиском записи, но добавьте опцию «включить». Предположим, что у Поста № 123 есть 50 комментариев.

p = Post.find_by_id(123)
p.comments.each do {|c| puts c } #Do something meaningful instead...

Будет сгенерировано 51 вызов базы данных, 1 для публикации и 1 для каждого комментария. Вместо этого вы можете сделать:

Post.find_by_id(123, :include => [:comments])

Теперь он будет автоматически запрашивать комментарии при поиске сообщения, объединяя 51 запрос в 1.

3 голосов
/ 05 августа 2009

Ответ зависит от размера коллекции. Если коллекция очень большая (1000 единиц или предметов), то, вероятно, хорошая идея - кэширование. Если его всего несколько, и у вас есть индексы для таблиц для быстрого поиска соответствующих строк, то, вероятно, кеш не требуется, особенно если вам все равно придется углубляться в коллекцию.

Как и во всех подобных вопросах, правильным ответом обычно является «это зависит». Это очень зависит от ваших требований и данных и т. Д.

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