【问题标题】:Rails 3 caching and image_tagRails 3 缓存和 image_tag
【发布时间】:2014-03-03 16:55:28
【问题描述】:

在我的 rails 应用程序中,我有一个功能允许用户旋转他们上传的图像。在后端,我只是使用 ImageMagick 的 convert 来旋转图像。

我遇到的问题是 image_tag 助手。据我了解,image_tag 在文件路径的末尾添加了一个时间戳以帮助浏览器缓存。但是,在应用convert 并刷新页面后,时间戳并没有改变,因此用户看不到他们的图像有任何变化。

我认为这与rails 缓存的整个视图有关吗?我不确定是否是这种情况,在 Google 上花费了一些时间并没有真正明确这是否是问题所在。

【问题讨论】:

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


    【解决方案1】:

    您应该能够使每次页面加载时图像的 URL 都是唯一的,这会破坏浏览器缓存:

    <%= image_tag "name_of_image.png?#{Time.now.to_f}" %>
    

    【讨论】:

    • 是的,这是一个选项,但浏览器缓存通常是可以的。我希望图像在旋转之前被缓存。
    • 也许使用图像的最后更新日期而不是Time.now。或者...使用与原始名称不同的名称保存旋转后的图像。
    • 是的,这些都是我最终可能会使用的很好的解决方案,但如果能确切地弄清楚为什么 image_tag 的行为不符合我的预期,那就太好了。
    • 您希望 image_tag 做什么?它将摘要添加到管道中资产的图像 URL 的末尾。而且,仅当您重新编译资产时,摘要才会更改。浏览器仍然缓存这些...
    • 这些资产是用户上传的,所以它们在public。这不是预编译的,对吗?也许这就是问题所在,image_tag 无论如何都没有读取这些图像的修改日期来创建摘要字符串?
    猜你喜欢
    • 1970-01-01
    • 2012-01-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-19
    • 2013-04-01
    • 1970-01-01
    相关资源
    最近更新 更多