首页 > 解决方案 > 从 MySQL 数据库(通过 PHP)获取时需要很长时间才能加载的优化图像

问题描述

我有一些响应式图像被输出到一个页面上,其中 URL 来自存储在 MySQL 数据库中的文件名。图像虽然经过优化(即使是大版本也小于 200KB),加载总是需要 5.00 秒。

代码如下,现阶段数据库中只有6张图片用于测试,但我不知道为什么这会影响页面加载速度。当我删除图像或添加从站点文件夹获取的静态图像并手动键入路径时,不会发生此问题。

$filename取自页面上的 URL 参数,然后使用 PHP 从 MySQL 数据库中获取详细信息。

当使用 Imagick PHP 库(500,750 和 1000 像素)上传时,图像以 3 种不同尺寸生成,并且通过字符串连接添加尺寸。

问题可能是由 MAMP 上的 MySQL 数据库本身引起的,但除了调查之外,我认为我最好检查一下我在这里没有做完全错误的事情(我对 PHP/MySQL 和 Web 开发相对较新一般来说)。

<?php

isset($_GET['filename']) ? $filename = $_GET['filename'] : header("Location: login.php");

$stmt = $connection->prepare("SELECT * FROM imageposts WHERE filename = :filename");

$stmt->execute([
':filename' => $filename
]); 

$www_root = "http://localhost:8888/site";

$db_image_filename = htmlspecialchars($row['filename']);
$db_image_ext = htmlspecialchars($row['file_extension']);
$db_image_title = htmlspecialchars($row['image_title']);

?>

// image output

<img
src="<?php echo $www_root . '/images-lib/' . $db_image_filename . '-500' . '.' . $db_ext; ?>"
srcset="<?php echo $www_root . '/images-lib/' . $db_image_filename . '-500' . '.' . $db_ext; ?> 500w,
        <?php echo $www_root . '/images-lib/' . $db_image_filename . '-750' . '.' . $db_ext; ?> 750w"
alt="<?php echo $db_image_title; ?>" 
title="<?php echo $db_image_title; ?>"
>

注意:一个典型的文件名是614b66956a121_1632331413-500在上传图像时通过 Imagick 库生成的,$db_ext可以是.jpeg.png

下图显示了图像加载的 5 秒。

显示图像加载时间的网络选项卡

标签: phphtmlmysqlimageload

解决方案


我就此联系了 MAMP,因为我注意到有关 MAMP 的这类问题得到了更多的评论和支持等。这是他们在 MAMP 6.5 中遇到的问题,他们设法解决了这个问题,并在 MAMP 6.6 中进行了更新。这解决了问题。


推荐阅读