存储上传的照片和文档 - 文件系统与数据库BLOB
我的具体情况
这是一个物业管理网站,用户可以上传照片和租赁文件。每个公寓单元可能会有4张照片,所以系统里的照片数量不会太多。
对于照片,会有每张照片的小缩略图。
我的问题
我最关心的是性能。对于最终用户,我希望页面加载和图片显示尽可能快。
我应该把图片存储在数据库里,还是存储在文件系统里,或者其实无所谓?我需要缓存什么吗?
提前谢谢你们!
6 个回答
绝对要把你的图片存储在文件系统中。很多人没有考虑到的一个问题是数据库的膨胀;把图片作为二进制数据塞进数据库,会让你的数据库迅速变得庞大。数据库变大了,就需要更强的硬件,备份和复制也会变得更麻烦等等。把图片放在文件系统上,这样你可以用很多现有的工具轻松简单地备份和复制它们。而且,增加文件系统的存储空间比在数据库中要容易得多。
文件系统,毫无疑问是最好的选择。把数据存储在数据库里需要经过很多层处理。
关于缓存的说明:如果你想在用户上传文件时进行缓存,以确保操作尽快完成,直接把文件存到硬盘(也就是文件系统)是最快的方式。只要文件不太大,而且同时在线的用户不太多,你可以把文件暂时存到内存中,先返回给用户,然后再保存到硬盘。老实说,我觉得这样做没必要。
如果你想在用户上传文件后把这些文件放到网上,并且希望通过缓存来提高性能,文件系统依然是最佳选择。这样你可以从你的网络服务器那里免费获得缓存(可能需要调整几个设置)。如果文件存储在数据库里,就享受不到这个好处。
听起来好像你永远不应该把文件存储在数据库里。其实并不是这样,只要有好的理由,存储在数据库里也是可以的。
虽然任何事情都有例外,但一般来说,把图片存储在文件系统里是最好的选择。这样你可以很方便地为这些图片提供缓存服务,不用担心额外的代码来处理图片,也可以通过常规的图片编辑方法轻松维护这些图片。
听起来你的商业模式很适合这种情况。