对于那些曾经缩放/缓存任何内容的人来说,这可能是一个显而易见的问题。我没有,而且我迷失在互联网上的教程和代码片段中(http://guides.rubyonrails.org/caching_with_rails.html)。
我正在安装Memcached部署到Heroku,并且正在找出最优化的方法来执行以下操作:
我认为#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
答案 0 :(得分:2)
有一些可能与此有关的小事。如果没有办法避免在每个请求中点击应用程序堆栈,那就很棘手。
将fragment caching与memcache一起使用,以避免重新生成帖子/评论内容。如果您的观点很重,可能会有一些收获。 Memcache对象自我过期,可以使用以下内容键入最新版本的帖子:
<% cache @post.cache_key do %>
<%= @post.formatted_content %>
...
<% end %>