优化图像从 MySQL 数据库获取时需要很长时间加载(通过 PHP)
Optimised Images Taking A Long Time To Load When Fetched From MySQL Database (via PHP)
我有一些正在输出到页面上的响应图像,其中 URLs 来自存储在 MySQL 数据库中的文件名。图像虽然经过优化(即使是大版本也 < 200KB),但始终需要 5.00 秒才能加载。
代码如下,现阶段数据库中只有6张图片用于测试,但我不明白为什么这会降低页面加载速度。当我删除图像或添加从站点文件夹中获取的静态图像并手动输入路径时,不会发生此问题。
$filename
取自页面上的 URL 参数,然后使用 PHP.
从 MySQL 数据库中获取详细信息
当使用 Imagick PHP 库(500,750 和 1000px)上传时,图像以 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 秒的图像加载时间。
我就此联系了 MAMP,因为我注意到关于 MAMP 的这些类型的问题得到了更多的评论和赞成等。他们在 MAMP 6.5 中遇到了一个问题,他们设法解决了这个问题,并在 MAMP 6.6 中进行了更新。这解决了问题。
我有一些正在输出到页面上的响应图像,其中 URLs 来自存储在 MySQL 数据库中的文件名。图像虽然经过优化(即使是大版本也 < 200KB),但始终需要 5.00 秒才能加载。
代码如下,现阶段数据库中只有6张图片用于测试,但我不明白为什么这会降低页面加载速度。当我删除图像或添加从站点文件夹中获取的静态图像并手动输入路径时,不会发生此问题。
$filename
取自页面上的 URL 参数,然后使用 PHP.
当使用 Imagick PHP 库(500,750 和 1000px)上传时,图像以 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 秒的图像加载时间。
我就此联系了 MAMP,因为我注意到关于 MAMP 的这些类型的问题得到了更多的评论和赞成等。他们在 MAMP 6.5 中遇到了一个问题,他们设法解决了这个问题,并在 MAMP 6.6 中进行了更新。这解决了问题。