memcached localhost / aws with rails

时间:2013-04-06 21:23:39

标签: ruby-on-rails caching memcached carrierwave dalli

我正在使用rails并通过运载波插件将图像上传到AWS。我开始使用memcached / dalli缓存图像,它可以正常工作......但是一段时间后所有图像都显示为破碎(约20-30分钟或使用不同的浏览器时)。

这是一个示例...缓存这组图像,其中post.avatar_url是图像的AWS网址。图像通常在没有缓存的情况下正常加载......但缓存最终会导致图像损坏。

  <% cache ["homeimages", post] do %>
    <%= link_to image_tag(post.avatar_url), post %>
  <% end %>

是什么导致图像破裂?

谢谢!

1 个答案:

答案 0 :(得分:0)

您是将其上传为私人还是公开?如果它们是私有的,那么在20-30分钟之后它们将不再可以从该URL访问的原因是图像上的权限令牌(将由avatar_url方法提供)到期意味着S3将响应404文件未找到

将图片公开,或尝试使用以下内容

<% cache(["homeimages", post], :expires_in => 20.minutes) do %>
   <%= link_to image_tag(post.avatar_url), post %>
<% end %>

20.minutes是访问令牌持续的时间。这意味着缓存永远不会超过令牌。

修改

你也意识到你不是“用memecached / dalli缓存图像”,而是img标签吗?