2010-06-16 2 views
1

У меня есть приложение для рельсов с моделью, которая является своего рода репозиторием. Записи, хранящиеся в БД для этой модели (почти), никогда не изменялись, но читаются все время. Их также не так много. Я хотел бы сохранить эти записи в кеше в общем виде. Я хотел бы сделать что-то вроде acts_as_cached, но вот вопрос у меня есть:Кэширующие модели в рельсах

  • Я не могу найти достойную документацию для актов, как кэшируются (ни я могу найти это хранилище)

  • I не хотите использовать memcached, но что-то более простое (статическая переменная или что-то в этом роде).

Вы знаете, какие драгоценности я могу использовать для этого?

Благодаря

EDIT

Я до сих пор ищет что-то подобное, но без cache_flu Memcached

ответ

0

acts_as_cached был заменен cache_fu.

+0

Есть ли что-то похожее на cache_fu, которое не будет использовать memcache, но что-то более простое? – Arthur

0

Вы можете хранить данные в кеш кеша по умолчанию или, как представляется, самый популярный выбор, используйте mem_cache_store, который использует memcached.

#production.rb 

config.cache_store = :mem_cache_store, '127.0.0.1:11211', {:namespace => "production"} 

#some_helper.rb 

def get_some_data 
    Rails.cache.fetch('some_reference'){Model.find_some_data} 
end 

Смотрите также: http://guides.rubyonrails.org/caching_with_rails.html

Кроме того, если вы используете пассажира вам нужно сделать, это:

if defined?(PhusionPassenger) 
    PhusionPassenger.on_event(:starting_worker_process) do |forked| 
    if forked 
     Rails.cache.instance_variable_get(:@data).reset if Rails.cache.class == ActiveSupport::Cache::MemCacheStore 
    else 
     # No need to do anything. 
    end 
    end 
end 
+0

Как я уже сказал, я не хочу использовать memcached, он слишком тяжелый, чтобы его можно было установить. Я хочу что-то простое. – Arthur

+0

Я предполагаю, что SQL-кэширование в моем случае значительно повышает производительность. Мне, вероятно, не понадобится что-то другое, но было бы здорово иметь что-то вроде cache_flu, которое будет работать без memchached – Arthur

1

Вы могли бы хранить данные в файл и загрузить его в постоянной (как это было предложено на Ruby on Rails: Talk):

require "yaml" 
class ApplicationController < ActionController::Base 
    MY_CONFIG = YAML.load(File.read(File.join(RAILS_ROOT, "config", "my_config.yml"))) 
end 
1

I запустили драгоценный камень под названием cache_me, который может работать с любым cache_store

он находится в режиме Alpha, но вы можете попробовать, а затем открыть несколько запросов/проблем с pull.

https://github.com/arunagw/cache_me

Я дам вам знать, когда она готова использовать полноэкранный режим.

Смежные вопросы