首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >加速从数据库中加载图像

加速从数据库中加载图像
EN

Stack Overflow用户
提问于 2012-06-05 03:22:10
回答 1查看 137关注 0票数 2

我正在从数据库中加载9张图片,我的语法大致如下:

代码语言:javascript
复制
<img src="image_loader.php?id=4"></img>

我的用于image_loader.php的PHP如下所示:

代码语言:javascript
复制
<?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不支持,但我不确定这一点。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-06-06 09:12:00

我首先考虑将图像存储在数据库中是否最有意义。这是可能的,但应该认真考虑,因为在文件系统中为每个图像提供一个唯一的文件名,并且在数据库中存储通常会更快。

如果您可以直接从客户端请求文件,而不是请求执行某种fopen()-style抽象的通用脚本,那么您将获得额外的速度。

为了缩小延迟的范围,首先检查您的数据库是否与您的the服务器托管在同一服务器上可能是有帮助的。它不是本地托管的,而是在远程数据库服务器上托管的,其中一个指示是检查您在mysql_connect()调用中提供的主机字符串。localhost会暗示它是本地化的,而其他一些东西会暗示它不是本地的。需要注意的是,许多共享托管服务(例如GoDaddy)将其数据库服务器从the服务器中分离出来。

为了更好地了解延迟的来源,我建议使用时间戳检测image_loader.php代码以定位延迟?我猜它会出现在查询中。

如果查询中的延迟,则需要限制查询的数量。允许您进行一次查询而不是9次查询的策略将限制任何the服务器到数据库服务器延迟的影响。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10887042

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档