【发布时间】:2021-11-18 03:16:29
【问题描述】:
我有一些响应式图像被输出到一个页面上,其中 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 秒。
【问题讨论】:
-
请张贴时间截图。如果您使用 chrome 按 F12,转到网络选项卡并按 F5
-
嗨@Daniels118 在网络选项卡中,对于图像,它始终是 5.00 秒,其他一切都如您所愿。不过会发布一张图片。
-
在 MySQL 配置中包含 skip-name-resolve 作为数据库设置
-
可以把生成的html页面贴出来吗?
-
@Daniels118 除了样板 HTML、head 和 body 标签之外,我刚刚删除了所有其他 HTML,它仍在发生,所以这不是问题。