在同一列中存储相对URL和绝对URL的最佳方法是什么?

时间:2016-01-03 17:21:32

标签: sql database database-design

用户可以为其头像上传图片,或指定其他网站的网址。

它存储在数据库的“user.image”列中。

用户上传图片 - 随机生成的带有原始扩展名的10个字母文件名保存在本地,文件名保存到数据库(不是整个路径)

用户指定URL - 整个URL保存到数据库

但是,当要显示图像时,我如何知道它是上传的图像(例如,仅在列中的文件名),还是用户指定了完整的URL?

可能的想法是:

  • 检查'user.image'是否以字符串'http://'开头 - 但在高流量时可能性价比高
    • 在保存时以物理方式下载指定的URL,并将该图像保存到本地服务器,然后仅使用文件名更新数据库(不是路径,因为它现在是本地的)

或者有更好的方法吗?

1 个答案:

答案 0 :(得分:0)

如前所述,您可以将图像存储在数据库或文件系统中。检查this question and answer以确定哪种情况更适合您的情况。

这样做还允许您以最大分辨率存储图像(在存储之前自动调整大小),执行一些优化以获得更小的尺寸等。