我正在使用Rails + Paperclip + S3。我希望使用我的一个S3存储桶将我的资产托管到Cloudfront。
我知道Cloudfront会缓存资产,但您可以通过将其配置为从源转发查询字符串来中断该缓存。
当我修改资产时,我预计会发生这种情况
updated_at
时间戳。updated_at
时间。但是,Paperclip看起来没有正确更新updated_at
时间戳。也许它以某种方式缓存。因此,查询字符串不会更新,Cloudfront也不会破坏缓存。
我的模特是:
class UserImage < ActiveRecord::Base
has_attached_file :image
end
>> ui = UserImage.find(576925)
>> ui.image.class
=> Paperclip::Attachment
>> ui.touch
>> ui.updated_at.to_i
=> 1386241041
>> ui.image.updated_at
=> 1386240937
这两个updated_at时间戳应该相同。
答案 0 :(得分:6)
看起来这可能是早期版本的Paperclip(我在2.7上)的一个错误,因为它适用于未来的版本。
作为参考,我就是这样做的。在我的模型的after_update中,我强制刷新实例,如下所示:
image.instance_write(:updated_at, Time.now.utc)
self.send(:update_without_callbacks)
我必须做update_without_callbacks
,这样它就不会陷入回调的无限循环中。
现在,“附件”上的updated_at
时间已更新,强制在Cloudfront上刷新。