У меня есть следующий запрос:запроса кэша, если модель не обновляется - рельсы
def home
@posts = Post.where(:isGroup => "public").order('created_at DESC').page(params[:page]).per(20)
end
я хотел бы кэшировать этот запрос, если новое сообщение не добавляются к модели Post.
Когда я использую
expires_in 5.minutes, public: true
кэширует все действие, а не просто запрос (и портит всю страницу, так как результаты являются началом бесконечной прокрутки, а страница имеет логин) ,
Когда я сделать: Это не похоже
cache "home_post", expires_in: 10.minutes do
@posts = Post.where(:isGroup => "public").order('created_at DESC').page(params[:page]).per(20)
end
показать любое повышение производительности, а также не обновляется при добавлении новой записи.
Что было бы лучшим способом просто кэшировать запрос?
спасибо.
Если я это сделаю, я получаю сообщение об ошибке (TypeError (не может сбрасывать анонимный класс #): Rails.cache.fetch ("homepage_posts",: expires_in => 5.minutes) @ posts = post.where (: isGroup => "public"). order ('created_at DESC'). page (params [: page]). per (20) end –
user749798
Я бы кешировал его таким образом 'Rails.cache. write ("homepage_posts", Post.where (: isGroup => "public"). order ('created_at DESC'). page (params [: page]). per (20) .all) '.' .all' caches записи, а не только активный экземпляр записи. Я бы также прочитал его так же: Rails.cache.read ('homepage_posts') ' – shishirmk