我正在开发一个架构,需要相当可扩展,我想知道如何处理我的用户图像。
目前,我已经将用户的图像存储为如下文件:
/users/{user id}/normal.jpg
/users/{user id}/small.jpg
问题是,我倾向于遇到缓存问题的人的浏览器,例如,当用户上传一个新的图像,它覆盖正常的。jpg和small.jpg,但用户的浏览并没有立即反映变化。
最好不要删除任何图像?
处理此问题的一种方法是使用图像文件最后更改的时间戳作为html代码中的参数。就像
<img src="normal.jpg?t=<timestamp>">
您可以使用函数stat()
来计算。
给新上传的图片随机命名,这样可以避免缓存问题。例如:
/users/{user id}/normal_{timestamp_of_upload}.jpg
每当一个新的上传完成,删除旧的,并把新的放在适当的地方。当然,您需要跟踪数据库中某个位置的实际文件名以及用户的其他信息。