我正在从数据库中加载9张图片,我的语法大致如下:
<img src="image_loader.php?id=4"></img>我的用于image_loader.php的PHP如下所示:
<?php
/* I set up my connection using mysql_connect and mysql_select_db */
$query = sprintf("SELECT ... FROM ... WHERE id='".$_GET["id"]."'");
$result = mysql_query($query, $con);
mysql_close($con);
if (!$result) {
// no result
}
else {
$row = mysql_fetch_row($result);
header('Content-type: image/png');
echo $row[0];
mysql_free_result($result);
}
?>每个图像大约为10-13k,但该包的加载速度似乎非常慢。我意识到浏览器一次可以执行的请求数量存在一些瓶颈,但等待时间似乎是不必要的。
关于如何快速从数据库加载图像有什么建议吗?
此外,这几乎是一个单独的问题,但现在是否可以指示浏览器(或服务器)使用.gif/.png/.jpg srcs缓存图像?似乎火狐支持,而Chrome不支持,但我不确定这一点。

发布于 2012-06-06 09:12:00
我首先考虑将图像存储在数据库中是否最有意义。这是可能的,但应该认真考虑,因为在文件系统中为每个图像提供一个唯一的文件名,并且在数据库中存储通常会更快。
如果您可以直接从客户端请求文件,而不是请求执行某种fopen()-style抽象的通用脚本,那么您将获得额外的速度。
为了缩小延迟的范围,首先检查您的数据库是否与您的the服务器托管在同一服务器上可能是有帮助的。它不是本地托管的,而是在远程数据库服务器上托管的,其中一个指示是检查您在mysql_connect()调用中提供的主机字符串。localhost会暗示它是本地化的,而其他一些东西会暗示它不是本地的。需要注意的是,许多共享托管服务(例如GoDaddy)将其数据库服务器从the服务器中分离出来。
为了更好地了解延迟的来源,我建议使用时间戳检测image_loader.php代码以定位延迟?我猜它会出现在查询中。
如果查询中的延迟为,则需要限制查询的数量。允许您进行一次查询而不是9次查询的策略将限制任何the服务器到数据库服务器延迟的影响。
https://stackoverflow.com/questions/10887042
复制相似问题