我有一个Rails应用程序,其中打开了资产管道。该应用程序允许上载需要作为静态资产提供的徽标。徽标文件是表格中的列。一般来说,这在开发和开发中都可以正常工作。生产模式。来自app / assets(分别为public / assets)的文件和位于public / logos中的上传徽标都正确地提供给浏览器。
但是如果上传了使用相同文件名的不同徽标,则浏览器仍会显示旧版本(均处于开发和生产模式)。但是当我清除浏览器缓存时,它会得到更新。我想这必须与缓存有关。我假设有一种方法可以过时更新文件的缓存,但无法弄清楚如何。我也不想强制用户使用不同的文件名,以防他们想要上传徽标的修改版本。要求用户删除浏览器缓存也不可行。使用资产:在服务器运行时期间添加徽标时,预编译任务不是解决方案。
资产管道和缓存对我来说仍然有点神秘,尽管我使用它已经有一段时间了。还有其他人看到过这种行为吗?
使用Ruby 1.9.3在Rails 3.2.13上运行。
答案 0 :(得分:0)
这听起来不像资产管道问题。
我假设使用像/logos/:id/filename.png这样的目录结构保存徽标,并且当用户用不同的徽标替换徽标并且使用相同的ID而不是创造一个新的。
我要么更换徽标记录,以便获得新ID,或者将上传的文件重命名为“:filename_:timestamp”,以便文件名更改并使浏览器缓存版本无效。
如果你自己处理文件上传而不是使用Paperclip或Carrierwave,那么在将文件保存到public / logos并在数据库中写入filename列之前重命名文件应该很容易。 / p>