Сомнительное повышение производительности приложений Rails - PullRequest
0 голосов
/ 22 апреля 2011

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

Но один и тот же запрос будет выполнен несколько раз для таблицы (запрос не включает никакую другую таблицу).

Чтобы избежать повторного выполнения этой работы, целесообразно ли реализовать какой-либо механизм кэширования с помощью кода?

Если да, то какой метод лучше всего реализовать?

Я планирую использовать глобальную хеш-переменную с первичным ключом в качестве хеш-ключа и значением в качестве результата запроса.

  1. Есть ли недостатки этой техники ???

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

  3. Есть ли лучший способ сделать это?

Спасибо

Ответы [ 3 ]

1 голос
/ 22 апреля 2011
  1. Да, вы переделываете что-то, что существует и работает отлично.

  2. Ну, не понимаю, почему вы думаете, что

  3. Конечно, да:

Ваш выбор более или менее:

  • встроенный: memory store

  • требуется некоторая настройка: memcached

  • альтернативное хранилище ключей / значений: redis http://redis.io/

Естьвзгляд здесь: http://railslab.newrelic.com/scaling-rails

0 голосов
/ 22 апреля 2011

Простейшим для динамических данных является использование собственного кэширования фрагментов в Rails.Для истечения срока действия используйте уборщик, который является наблюдателем, который вызывается при изменении вашей модели и истекает срок действия кэша. См. Руководство Rails по кешированию для получения справки по кешированию фрагментов и Sweepers.

Единственное, что не рассматривается в руководстве, довольно очевидно, что вам нужно использовать фрагмент с глобальным ключом и включают идентификатор вашей записи в строку ключа.Нравится: <% cache( "foo_stuff_#{@foo.id}" ) do %>

0 голосов
/ 22 апреля 2011

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

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