命名用户头像的最有效方法是什么?

时间:2010-11-23 11:37:21

标签: php

我想让我的用户在他们的个人资料上上传头像。我的第一个想法是将头像文件命名为:[user_id] .jpg。因此,即使用户更新其头像,它也保持相同的名称。

问题在于,如果我在服务器上使用缓存(或者即使在客户端上使用缓存),新的头像也不会显示。

我的新解决方案是将文件命名为:

[user_id] _ [random_number] .jpg

并将随机数存储在Users表中。你会如何以最有效的方式产生这个数字?或者可能有更好的解决方案?

4 个答案:

答案 0 :(得分:7)

当用户上传新头像时,您应该能够使缓存无效。

如果无法做到这一点,您可以将其存储为[uid] _ [YYYYMMDDhhmmss] .jpg等。无需随机生成任何内容......

答案 1 :(得分:5)

我会做类似的事情:

$avatarName = $userId . uniqid();
// add extension if needed, store it

它会很快并且做你想做的事。 uniqid()

修改

正如其他用户所建议的那样,您应该从图像名称中删除userId。拥有公共userId可能会导致将来出现问题。 此外,仅uniqid()就可以了。

$avatarName = uniqid();
// add extension if needed, store it

答案 2 :(得分:1)

您是否考虑过在.htaccess中配置ETags

请参阅:

http://developer.yahoo.com/blogs/ydn/posts/2007/07/high_performanc_11/

虽然您可以更改文件名,但您需要管理清理和指点操作(删除/重命名旧文件,告诉您的应用程序新文件)。如果您乐意这样做,您只需在上传点附加带有unix时间戳的用户ID,就不太可能将相同的文件上传到同一秒。如果你想让它更加独特,可以附加一个随机数/ uniquid。

答案 3 :(得分:0)

随机数会有一个微小的(可忽略的)碰撞机会,但为什么不从1开始,每次只增加数字,因为你存储了这个数字。