前提:所有用户头像图片以二进制数据形式存于数据库中,所以图片输出是PHP输出图片形式(不要问为什么把图片存进数据库)。
目前:页面是用户头像列表页面,要把用户头像一一显示出来。比如:
<div><img src="img.php?title=A" /></div><div><img src="img.php?title=B" /></div><div><img src="img.php?title=C" /></div>……
其中img.php从数据库中来读取A、B、C或其它用户的头像图片并显示。
问题:我想知道,有什么方法来进行优化这种同时多个频繁MYSQL数据库读取?比如如何“保持数据库持久连接”,等img.php?title=…… 一一执行完之后再关闭。
——上面的意思,大家能明白吧。
目前:页面是用户头像列表页面,要把用户头像一一显示出来。比如:
<div><img src="img.php?title=A" /></div><div><img src="img.php?title=B" /></div><div><img src="img.php?title=C" /></div>……
其中img.php从数据库中来读取A、B、C或其它用户的头像图片并显示。
问题:我想知道,有什么方法来进行优化这种同时多个频繁MYSQL数据库读取?比如如何“保持数据库持久连接”,等img.php?title=…… 一一执行完之后再关闭。
——上面的意思,大家能明白吧。
就你的想法,数据库长连接对克服瓶颈并没有多大帮助,问题在于I/O及内存消耗上,如果写代码的人不去注意,所耗费的内存就会是这张图片本身大小的数倍
注意这不是在一次 img.php 中访问了 3 次数据库
因此并没有优化的空间!这不是是否把图片数据放在数据库中的问题
因为数据库中只保存图片名时,数据库查询一样是必须的
存数据库跑php又跑mysql,非得存数据库那就做些数据缓存处理吧……,不要频繁查数据库,用户更新头像再更新缓存文件。
而从整个页面看,则的确有这个现象。
不把图片从数据库里解脱出来,无解。