参考链接:http://www.cnblogs.com/wangtao_20/p/3440570.html
以下为简略版
商品图片,用户上传的头像,其他方面的图片。目前业界存储图片有两种做法:
1、 把图片直接以二进制形式存储在数据库中
一般数据库提供一个二进制字段来存储二进制数据。比如mysql中有个blob字段。oracle数据库中是blob或bfile类型
2、 图片存储在磁盘上,数据库字段中保存的是图片的路径。
有个原则:图片尽量不要存储在数据库中(是指不要二进制形式保存到字段,而只保存图片的路径)。这样的大字段数据会加重数据库的负担,拖慢数据库。在大并发访问的情况下很重要。这是一个经验。去看看dba对数据库性能调优方面的分析都能得到这个答案的:就是图片不要存储在数据库中。
关于第二点图片存储在磁盘上,需要注意的:
操作系统对单个目录的文件数量是有限制的。当文件数量很多的时候。从目录中获取文件的速度就会越来越慢。所以为了保持速度,需要按照固定规则去分散到多个目录中去。
图片分散到磁盘路径中去。数据库字段中保存的是类似于这样子的”images/2012/09/25/ 1343287394783.jpg”。
原来上传的图片文件名称会重新命名保存,比如按照时间戳来生成,1343287394783. jpg。这样子是为了避免文件名重复,多个人往同一个目录上传图片的时候会出现。
反正用什么样的规则命名图片,只要做到图片名称的唯一性即可。
比如网站的并发访问量大,目录的生成分得月细越好。比如精确到小时,一个小时都可以是一个文件夹。同时0.001秒有两个用户同时在上传图片(因为那么就会往同一个小时文件夹里面存图片)。因为时间戳是精确到秒的。为了做到图片名称唯一性而不至于覆盖,生成可以在在时间戳后面继续加毫秒微秒等。总结的规律是,并发访问量越大。就越精确就好了。

本文探讨了图片存储的两种常见方式:数据库二进制存储与磁盘存储,并强调了图片路径存储的重要性。深入讨论了图片命名与分布规则,以确保高并发场景下的效率。此外,还详细解析了CDN的工作原理及其在网络优化中的关键作用。
最低0.47元/天 解锁文章
1787

被折叠的 条评论
为什么被折叠?



