0

у меня есть это в мой контроллер:Почему кеши ActiveRecord находят (: все) между запросами?

def frontpage 
    @sections = Section.all 
end 

В производственной среде, запрос кажется кэшировать между запросами. Пока я не перезапущу приложение, @sections всегда будет таким же. Почему и как я могу это исправить? Я должен также упомянуть, что я использую Postgres в производстве, может быть, это и есть причина?

+0

Как вы определяете, что запрос кэшируется? –

ответ

1

Я считаю, что в вашей производственной среде вы включили кеширование где-то. Хотя я не могу сказать вам, почему и где, я могу дать вам решение:

def frontpage 
    uncached do 
     @sections = find(:all) 
    end 
end 

По крайней мере, он должен сделать трюк

е: Преимущество этого является то, что она затрагивает только код внутри блока. Все остальное должно быть кэшировано.

+0

Это не сработает, если действие будет кэшировано. –

0

Запросы не кэшируются между запросами, но действия могут быть. У вас есть cache_action или другой механизм кеширования, определенный в вашем контроллере?

EDIT: выяснить, если это ваше действие, которое кэшируются, это в вашем действии:

def frontpage 
    return render :text => Time.now.to_s 
    ... 
end 

И увидеть ее изменения.

0

Обратите внимание на вопрос this answer. Если ваша конфигурация настроена на кеш-память, вы должны отключить ее (по крайней мере, в разработке). В противном случае, если вы хотите сделать недействительным кеш определенной страницы, вы можете определить способ для этого в своем контроллере:

private 
def invalidate_cache 
    Rails.cache.delete("/sections") 
end 

Вам нужно будет указать, когда это вызвано, но это сделало бы трюк.

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

  • Нет связанных вопросов^_^