使用Rails从db或缓存或文件提供动态文本?

时间:2012-02-02 20:21:07

标签: ruby-on-rails mongodb content-management-system

这是我的问题。

  • 我们的技术。作家或客户服务通常会为Web应用程序创建新的或编辑现有副本。
  • 我需要将文本位存储在数据库中,以便应用程序可以列出,排序等......它们也是关系型的,但主要用于管理目的(例如:获取与付款相关的所有文本等。 ..)
  • 一页上最多可显示30-40个不同的文本位。
  • 我想避免每次呈现页面时都运行查询。
  • 文本将使用辅助方法在页面上呈现。
  • 集合的大小不会那么大。它们主要是网站的副本,但我们不希望我们的开发人员进行副本更改。

我正在考虑一种方法来实现这一目标并拥有这些想法

  • 将文本保留在DB中,但使用Rails缓存存储来帮助它们。更新时使缓存过期等...
  • 使用MongoDB利用其缓存。
  • 将文本存储在文件中并从文件中提供

也许我完全处于错误的道路并以不同的方式处理,但我不确定除了经常更改视图文件之外,只提供少量半动态文本的最佳方法。

欢迎任何建议:)

由于

1 个答案:

答案 0 :(得分:0)

提供此内容的最快方式将是通过memcached并在我看来最容易设置(减少麻烦然后从mongo服务)。将内容保存在数据库中并在视图级别缓存。

所以你所要做的只是在视图中(请从视图中查看这个语法,因为这是我的头脑):

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

在你的发展中:

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

或者如果你在heroku上运行app那样生产类似的东西:

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

然后在此模型中添加time_stamp它会自动过期。 (您也可以使用没有memcached的Rails.cache或作为文件存储,但取决于您在服务器上的设置可以节省多少内存/空间。