gpt4 book ai didi

php - 如何使图像加载更快?

转载 作者:太空宇宙 更新时间:2023-11-04 15:28:03 24 4
gpt4 key购买 nike

我怎样才能使这些图像加载得更快?我有一个显示个人资料图片的循环,这些照片需要 1 到 2.5 秒才能加载。不是一个接一个,而是几乎同时发生。我尝试用 PHP 调整大小,但这并没有真正改变任何东西。我不确定如何使用这样的循环预加载这些图像。我可以做些什么来提高负载性能?

PHP

$query = "SELECT `photoid` FROM `site`.`photos` WHERE `profileid`='$profileid'";
try{
$getphotos = $connect->prepare($query);
$getphotos->execute();
while ($array = $getphotos->fetch(PDO::FETCH_ASSOC)){
echo '<div id="photo"><img src="photoprocess.php?photo='.$array['photoid'].'"></div>';
}
} catch (PDOException $e) {
echo $e->getMessage();
}

CSS

#photo img {
max-width:100%;
max-height:100%;
}

photoprocess.php

       $photoid = $_GET['photo'];

$query = "SELECT `ext` FROM `site`.`photos` WHERE `photoid`='$photoid'";
try{
$getphotos = $connect->prepare($query);
$getphotos->execute();
$array = $getphotos->fetch(PDO::FETCH_ASSOC);
} catch (PDOException $e) {
echo $e->getMessage();
}

$ext = $array['ext'];

$image = imagecreatefromjpeg('userphotos/'.$photoid.''.$ext.'');
$imagearray = imagejpeg($image, null);

header('Content-type: image/jpeg');
echo $imagearray;

我也有作为“if 语句”的扩展检查,但这些不会减慢这么多。

最佳答案

这部分

    $image = imagecreatefromjpeg('userphotos/'.$photoid.''.$ext.'');
$imagearray = imagejpeg($image, null);

应该不是必需的*并且会在服务器上很重。您无缘无故地加载(解码)和保存(重新编码)图像。

使用像fpasshtru()这样的东西:

$name = 'userphotos/'.$photoid.''.$ext.'';
$fp = fopen($name, 'rb');

header('Content-type: image/jpeg');

fpassthru($fp);

或者直接链接到图片。除非你做了一些安全检查什么的,或者图像存储在网络根目录之外,否则这里根本不需要通过 PHP。

* = 除非您有非常具体的用例,例如从存储的图像中删除 EXIF 数据。在这种情况下,您应该使用某种形式的缓存。

关于php - 如何使图像加载更快?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17516807/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com