Memcached хранит данные, но Rails их не использует
-
05-07-2019 - |
Вопрос
окружающая среда.рб:
config.cache_store = :mem_cache_store, '127.0.0.1', { :namespace => RAILS_ENV.to_s }
девелопмент.рб:
config.action_controller.perform_caching = true
Это результат memcached при вызове URL-адреса.
получить development:views/127.0.0.1:3000/aktionen.xml ключ отправки development:views/127.0.0.1:3000/aktionen.xml КОНЕЧНЫЙ набор development:views/127.0.0.1:3000/aktionen.xml 0 60 3 СОХРАНЕНО
Контроллер
caches_action :index, :expires_in => 5.seconds, :layout => false, :format => :xml
Информация
cache_pages вообще не производит никакой активности в memcached.Rails записывает aktionen.xml в общую папку, также игнорируя параметры expires_in и format.Вызов 127.0.0.1:3000/aktionen создает файл aktionen.html
Решение
Rails (начиная с версии 2.1) предоставляет различные хранилища для кэшированных данных, созданных кэшами действий и фрагментов.Кэш страниц всегда хранится на диске.
Кэширование действий ОЧЕНЬ похоже на кэширование страниц, разница лишь в том, что запрос страницы всегда будет поступать на ваш rails-сервер, и ваши фильтры всегда будут выполняться.Чтобы настроить кэширование действий, наш контроллер может выглядеть следующим образом:
class BlogController < ApplicationController
layout 'base'
before_filter :authenticate # <--- Check out my authentication
caches_action :list, :show
Более подробная информация здесь: http://railsenvy.com/2007/3/20/ruby-on-rails-caching-tutorial-part-2
Другие советы
Вы пробовали увеличить срок действия до чего-то большего, чем на 5 секунд, просто чтобы убедиться, что срок действия данных не истек, прежде чем вы сможете проверить их существование?