情景:
我觉得这是一个愚蠢的问题。
答案 0 :(得分:1)
编译资产只是一个rake任务,您可以随时调用任务。任务是bundle exec rake assets:precompile
。有关详细信息,请参阅http://guides.rubyonrails.org/asset_pipeline.html。
但是,我不会将用户上传的图像视为要编译的资产。我认为这样做是个坏主意。
相反,就像您提到的那样,让用户上传的图片具有唯一的名称。因此,当上传/替换新图像时,将生成新名称。可以在paperclip gem中找到完成此操作的示例。它将图像写入磁盘并在数据库中保存记录/引用。这些图像在数据库中具有id,URL涉及该id。所以你会/photos/4/nothing.png
和/photos/2/yes.png
。其中2和4指向具有元数据/图像关系的数据库记录。
此外,当您使用image_tag
rails视图助手时,它会自动将缓存破坏者添加到图像的URL上。缓存触发器作为查询字符串完成,因此image_tag('test.png')
变为/images/test.png?1234567890
。有时某些代理不会“破坏”查询字符串缓存,但这些代理是少数。