我正在和一个同事(PHP)争论关于guid的问题,我们意见都不一致。假设每个图像的信息都存储在数据库中,并且有自己的主键(int)。
除了不必担心重复的文件名之外,还有什么原因可以为图像文件名使用唯一ID ?
我不想忽视他的方法,但我也不喜欢。
谢谢!本
更新:听过许多guid的+1,SEO如何受到"随机"生成的图像文件名的影响?(感谢Sukumar)
除了不必担心重复的文件名之外,还有什么原因可以为图像文件名使用唯一ID ?
为文件名使用自动递增主键可能会猜测其他图像的URL,这可能是您不想要的-根据您的系统工作方式,用户可以,例如,访问不打算发布的图像(尚未)。
我认为使用唯一id是一个很好的主意。
对文件名使用GUID的优点
- 获取不可预知的文件名。
- 可缩放的名称(当DB被分片时不需要担心重命名文件)。
文件名使用GUID的缺点
- 必须在数据库中存储额外的数据。
- 通过减少对额外列的需求来节省存储空间。
文件名
使用DB主键的缺点- 创建可预测的文件名,允许用户"猜测"。
摘要:这是您需要根据您的需求考虑的权衡。但似乎更倾向于选择guid。
UUID
是伟大的,当你需要有不可预知的文件名,所以没有人可以下载所有的文件没有正确的url。
如果您使用主键将其存储在数据库中,我建议使用它作为唯一ID(因此文件名)。在数据库中使用两个唯一的列来标识一个资源没有多大意义。顺便说一下,我不会对这个主键使用自动递增字段。很容易猜出其他可能不需要的图像id。
我认为两者之间的选择是一个品味问题。我们两者都用。文件名是最常用的,但你必须有查看文件的权限。我们也使用一个唯一的ID,但这是为了避免权利检查和允许别人分享图像给非用户。