在CDN上更新用户创建的内容的最佳实践

时间:2013-02-24 21:44:05

标签: php mysql caching cdn cloudfiles

我很难决定如何处理用户生成的上传而不将文件名值存储在数据库中。当用户上传说,个人资料头像/图像时,我在CDN上创建它。我在PHP中的头像助手知道容器的URL,所以我可以简单地回显'http://cdn-static-url.com/'.$userId.'.jpg

但是如果用户重新上传/更改他们的头像,旧图像仍会在CDN上缓存,直到TTL过期,或者我发送清除请求(我使用云文件并且有无限制的清除请求,但即便如此,清除不是立即的)。

我应该如何允许重新上传图片,并且;

  • 立即强制改变,
  • 提醒用户清除状态(“您的新图片可能需要X时间才能更新”,我从未见过这个)
  • 在CDN上创建一个新对象,这意味着在MySQL中存储对文件名的引用(每次我想在页面上回显头像网址时,我会做一个SELECT ...)
  • 使用上面的内容并为每个对象的当前URL利用Memcache?

1 个答案:

答案 0 :(得分:3)

实践中非常便宜但常用的选项是在每次更改时生成修订ID。然后,您将使用该修订引用一个全新的文件名(<revision>.extension)或将修订附加到语义相关的URL作为查询参数(user/profile.jpg?<revision>)。