1

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

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

我应该如何允许重新上传图像,或者;

  • 立即强制更改,
  • 提醒用户清除状态(“您的新图像可能需要 X 时间来更新”,我什至从未见过这个)
  • 在 CDN 上创建一个新对象,这意味着在 MySQL 中存储对文件名的引用(然后我每次想在页面上回显头像 url 时都会执行 SELECT ......)
  • 使用上述方法并为每个对象的当前 url 使用 Memcache?
4

1 回答 1

4

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

于 2013-02-24T21:49:18.120 回答