我正在为我的网站添加一些功能,以便用户可以上传他们自己的个人资料图片,所以我想知道是将它们作为BLOB存储在数据库中,还是将它们放在文件系统中.
我在这里找到了一个类似的问题:在DB中存储图像:Yea或Nay,但给出的答案更倾向于人们期待数千甚至数百万的图像,而我更关心的是小图像(JPEG图像直到可能是150x150像素),而且数量很少:可能高达一两千.
对于这种情况,DB BLOB vs Filesystem有什么感受?客户端如何使用来自DB和文件系统的缓存映像?
如果存储在数据库中的BLOB是要走的路-有什么我应该知道哪里来存储它们?由于我想我的大多数用户都不会上传图片,我是否应该在需要时创建一个user_pics
表(外部)连接到常规users
表?
编辑:我正在重新打开这个问题,因为它与你链接的那两个不重复.这个问题具体是关于使用DB或FS来处理少量图像的优缺点.正如我上面所说,另一个问题是针对需要存储数千个大图像的人.
回答部分问题:
客户端如何使用来自DB和文件系统的缓存映像?
对于数据库:在数据库中有一个last_modified字段.使用Last-Modified HTTP标头,以便客户端的浏览器可以正常缓存.当浏览器请求图像"如果更新"(无法回想起它的内容;某些HTTP请求标题)时,请务必发送相应的响应.
对于文件系统:做同样的事情,但文件的修改时间.
如果存储在数据库中的BLOB是可行的方法 - 我应该知道存储它们的位置吗?由于我想我的大多数用户都不会上传图片,我是否应该在需要时创建一个user_pics表到(外部)加入常规用户表?
我会将BLOB和相关的元数据放在它自己的表中,它与你的用户表之间有某种关系.这样做可以更轻松地优化数据的表存储方法,使事情更加整洁,并为可扩展性留出空间(例如,一般的"文件"表).