在Heroku上缓存的Rails表现得很奇怪

时间:2012-05-09 10:25:16

标签: ruby-on-rails ruby-on-rails-3 caching heroku

我在视图上实现了片段缓存。更具体地说,在评论部分。它看起来像:

<% cache "video_#{@video.id}_comments" do %>
  <div id="comments">

    <%= render :partial => 'artists/videos/comments/comments' %>

  </div>
<% end %>

在我的评论控制器中,创建动作,我有:

  ....
  if @comment.save
    expire_fragment("#{@comment.commentable.class.to_s.downcase}_#{@comment.commentable.id}_comments")

在开发中,创建新评论时。缓存已过期,当我重新加载页面时,新注释会正常显示。

在Heroku上,事实并非如此。是因为我应该使用memcache吗?或者我在其他地方做错了什么?

1 个答案:

答案 0 :(得分:3)

只是一个想法。你能尝试一下:

Rails.cache.delete("views/"#{@comment.commentable.class.to_s.downcase}_#{@comment.commentable.id}_comments")

代替expire_fragment

另外,我强烈建议在heroku中使用缓存存储。否则,默认值为内存存储,它是dyno的本地存储,对其他dynos不可见。此外,您的应用程序内存很快就会用完。此外,Heroku提供的dalli商店超级快。请参阅此doc