Ruby on rails Rails:image#u标记不';t追加图像的时间戳';s上次更改(加载页面时强制刷新而不是缓存)

Ruby on rails Rails:image#u标记不';t追加图像的时间戳';s上次更改(加载页面时强制刷新而不是缓存),ruby-on-rails,image,carrierwave,browser-cache,Ruby On Rails,Image,Carrierwave,Browser Cache,我使用Carrierwave在Rails应用程序中上传文件 替换已上载的图像时,浏览器仍会将缓存的原始图像呈现给用户。只有在硬刷新(Mac上的Cmd-Shift-R)后,才会呈现新的 我在这里读到()Rails会将图像的“上次更新”时间戳附加到URL,但在我的应用程序中似乎没有: 也许这一点同时改变了(提到的帖子是从2009年开始的)?那今天该怎么解决呢?谢谢。image\u标记使用资产路径计算最终的图像路径(如果它来自资产管道),但这两种方法都不添加缓存buster时间戳 当映像位于资产管道

我使用Carrierwave在Rails应用程序中上传文件

替换已上载的图像时,浏览器仍会将缓存的原始图像呈现给用户。只有在硬刷新(Mac上的Cmd-Shift-R)后,才会呈现新的

我在这里读到()Rails会将图像的“上次更新”时间戳附加到URL,但在我的应用程序中似乎没有:


也许这一点同时改变了(提到的帖子是从2009年开始的)?那今天该怎么解决呢?谢谢。

image\u标记
使用
资产路径
计算最终的图像路径(如果它来自资产管道),但这两种方法都不添加缓存buster时间戳

当映像位于资产管道中并且启用了资产摘要时,将通过资产编译向文件名添加校验和。对于上传的图像,这是您的图像上传库或您自己的任务

例如(过去很流行)用于在
中保存图像时间戳的库回形针,如:

类PhotoUploader
或者通过其他算法生成唯一的文件名。 无论如何,从安全角度来看,在存储中使用原始的用户提供的文件名通常不是一个好主意(例如,有人可以上传
讨厌的_xss_hack.html


另一个选择-是自己添加时间戳,模型的
更新时间为。to_i
并不理想(通常模型更新的时间比图像更新的时间更多),但会完成工作。

我是唯一面临此类问题的人吗?代码行具有
图像标记
可能有助于调试,因此最好添加该行代码。