Кэширование Моделей в направляющих

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

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

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

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

Спасибо

Править

Я все еще ищу что-то подобное cache_flu, но без memcached

1
задан Arthur 1 July 2010 в 20:41
поделиться

3 ответа

Вы можете хранить данные в кэше rails по умолчанию или, как кажется наиболее популярным выбором, использовать 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

Также, если вы используете passenger, вам нужно сделать следующее:

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
ответ дан 2 September 2019 в 23:43
поделиться

acts_as_cached был вытеснен cache_fu

0
ответ дан 2 September 2019 в 23:43
поделиться

Не могли бы вы сохранить данные в файле и загрузить их в константу (как предлагается на 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
ответ дан 2 September 2019 в 23:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: