Вероятно, очевидный вопрос для тех из вас, кто что-то масштабировал / кэшировал раньше.У меня нет, и я заблудился в учебных пособиях и фрагментах кода по всему Интернету (http://guides.rubyonrails.org/caching_with_rails.html).
Я развертываю в Heroku с установленным Memcached и выясняю, как оптимизировать этот способ.следующее:
- Запросить базу данных, чтобы найти сообщение и посмотреть, был ли он помечен
- Запросить белый список, чтобы узнать, была ли помечена другая часть сообщения.'
- Запросите API, чтобы узнать, нашел ли он этого пользователя в своей системе.
- Визуализация страницы с множеством повторных вызовов к удаленным системам для CSS / JS / и т. Д.
Я предполагаю, что # 1 происходит часто и часто меняется. # 2 реже. # 3 меняется нечасто (месяцы), и # 4 должен изменяться только, если # 3 меняется.
Я хочу иметь возможностьувеличивайте flag_count и view_count регулярно, не обращаясь к кешированной версии. Какое сочетание кеширования страниц, действий и фрагментов мне следует делать? Прямо сейчас, я вообще не кеширую это действие ...
Мой [упрощенный]код контроллера:
def show
expires_in 12.hours, :public => true
@post = Post.find(params[:id])
#CHECK FLAG STATUS
redirect_to root_path and return if @post.flag?
#CHECK WHITELIST STATUS
redirect_to root_path and return if Whitelist.includes?(@post.screen_name)
#Ping API again on the off chance user deleted/changed account
if @post && @post.user = get_user_from_api( @post.screen_name )
@post.increment_views!
render :layout => false
else
redirect_to root_path
end
end