唯一id (GUID's)对网站图像文件名有好处吗?


Are unique IDs (GUID's) good for website image filenames?

我正在和一个同事(PHP)争论关于guid的问题,我们意见都不一致。假设每个图像的信息都存储在数据库中,并且有自己的主键(int)。

除了不必担心重复的文件名之外,还有什么原因可以为图像文件名使用唯一ID ?

我不想忽视他的方法,但我也不喜欢。

谢谢!本

更新:听过许多guid的+1,SEO如何受到"随机"生成的图像文件名的影响?(感谢Sukumar)

除了不必担心重复的文件名之外,还有什么原因可以为图像文件名使用唯一ID ?

为文件名使用自动递增主键可能会猜测其他图像的URL,这可能是您不想要的-根据您的系统工作方式,用户可以,例如,访问不打算发布的图像(尚未)。

我认为使用唯一id是一个很好的主意。

对文件名使用GUID的优点

  • 获取不可预知的文件名。
  • 可缩放的名称(当DB被分片时不需要担心重命名文件)。

文件名使用GUID的缺点

  • 必须在数据库中存储额外的数据。
使用DB主键的优点
  • 通过减少对额外列的需求来节省存储空间。

文件名

使用DB主键的缺点
  • 创建可预测的文件名,允许用户"猜测"。

摘要:这是您需要根据您的需求考虑的权衡。但似乎更倾向于选择guid。

UUID是伟大的,当你需要有不可预知的文件名,所以没有人可以下载所有的文件没有正确的url。

如果您使用主键将其存储在数据库中,我建议使用它作为唯一ID(因此文件名)。在数据库中使用两个唯一的列来标识一个资源没有多大意义。顺便说一下,我不会对这个主键使用自动递增字段。很容易猜出其他可能不需要的图像id。

我认为两者之间的选择是一个品味问题。我们两者都用。文件名是最常用的,但你必须有查看文件的权限。我们也使用一个唯一的ID,但这是为了避免权利检查和允许别人分享图像给非用户。