【转】 如果网站有大量的图片,是存在数据库好?还是存文件?
数据库的好处是便于批量查询和返回结果,适用于查询方面的需求。
文件的好处是便于直接访问,适用于直接显示方面的需求。
如果你是想作为像百度图片和google图片一样的一个图片搜索系统,那么当然是数据库优先啦,不过需要注意的是,并不是把图片存入数据库,而是在数据库中存储从图片中提取的特征,便于查询,图片作为最终数据需要存储在另外一个数据库中,当然,特征数据库和图片实体数据库之间可以通过图片的编号来进行一一对应。
如果你只是说有很多的文章,里面有很多的配图,那么直接文件存储吧,这样访问该文章的时候就直接返回图片内容了。这里也有一点要注意,就是图片的加载最好异步处理,这样会有更好的用户体验,因为如果不异步处理的话,可能会因为加载图片而让页面一直处于加载状态。
存文件,而且最好用单独的服务器,原因如下:
1、图片内容一般不会做搜索,没必要放数据库
2、图片传送比较占用带宽,如果数据库和应用分离(即不再同一台服务器),那么去得一个图片需要从客户端到应用端取数据,应用又需要从数据库去取,这样会占用大量的带宽,同时这也会在数据库服务器和应用服务器两处IO上形成瓶颈。
如果图片单独放在服务器上,取图片的时候,则只需要客户端通过HTTP协议去图片服务器上取,减少带宽占用。并且,这里的IO瓶颈只存在图片服务器上,会快很多。