1

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

<% 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 上,情况并非如此。是因为我应该使用内存缓存吗?还是我在其他地方做错了什么?

4

1 回答 1

3

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

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

代替 expire_fragment

另外,我强烈建议在 heroku 中使用缓存存储。否则,默认值是内存存储,它是 dyno 本地的,对其他 dyno 不可见。此外,您的应用程序内存很快就会用完。另外,Heroku 提供的 dalli store 速度超级快。参考这个文档

于 2012-05-09T11:18:52.823 回答