Обслуживание динамического текста из базы данных, кэша или файла с помощью Rails? - PullRequest
0 голосов
/ 03 февраля 2012

Вот моя проблема.

  • Наши технологии. Автор или служба поддержки часто создают новые или редактируют существующие копии для нашего веб-приложения.
  • Мне нужно хранить биты текста в БД, чтобы приложение могло перечислять, сортировать и т. Д. ... Они также будут реляционными, но в основном для целей администратора (например: получить все тексты, связанные с оплатой и т. Д.) ..)
  • На одной странице может отображаться до 30-40 различных этих текстовых битов.
  • Я хочу избегать выполнения запросов при каждом отображении страницы.
  • Текст будет отображаться на странице с использованием вспомогательного метода.
  • Размер коллекции не будет таким большим. В основном это копии для сайта, но мы не хотим, чтобы наши разработчики вносили изменения в копии.

Я думал о способе сделать это, и у меня были эти идеи

  • Храните тексты в БД, но используйте кеш-хранилище Rails, чтобы помочь обслуживать их. Срок действия кеша при обновлениях и т.д ...
  • Используйте MongoDB, чтобы воспользоваться преимуществами своего кэширования.
  • Хранить тексты в файлах и подавать из файлов

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

Любой совет приветствуется:)

Спасибо

1 Ответ

0 голосов
/ 06 февраля 2012

Самый быстрый способ обслуживания этого контента будет через memcached и, на мой взгляд, самый простой в настройке (меньше хлопот, чем его обработка из mongo).Сохранить ваш контент в базе данных и кэшируется на уровне просмотра.

Так что все, что вам нужно, это, например, на виду (пожалуйста, проверьте этот синтаксис на виду, поскольку это выходит за рамки моей головы):

<% Rails.cache(MyTextModel) %>
<% end %>

В вашем развитии:

config.cache_store = :mem_cache_store, 'localhost:11211'

или Production что-то в этом роде, если вы запустите приложение на heroku:

  config.cache_store = :dalli_store, ENV['MEMCACHED_HOST'],
  { :compress => true, :username =>  ENV['MEMCACHED_USERNAME'],
     :password =>  ENV['MEMCACHED_PASSWORD']}

Затем добавьте time_stamp в этой модели, оно автоматически истечет.(вы также можете использовать Rails.cache без memcached или в качестве хранилища файлов, но в зависимости от ваших настроек на сервере, сколько памяти / места вы можете сэкономить.

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