为什么加载需要这么长时间?

时间:2019-12-18 15:34:44

标签: php html

基本上,我试图将从FTP下载的图像及其预览显示到下拉列表中。好吧,我做到了,但是我最近注意到大图像以其完整尺寸加载,并且网站上的动画和内容变得非常笨拙(并且也是第一次加载)。 然后,我受互联网的各种启发,编写了以下代码。我设法使其正常工作,但现在网站加载速度甚至更慢。怎么了?我是否放弃了这个想法,只是每次上传图像时都将预览图像上传到我的FTP,还是可以加快速度?

function endsWith($haystack, $needle) {
  $length = strlen($needle);
  if ($length == 0) {
    return true;
  }

  return (substr($haystack, -$length) === $needle);
}

function resize_image($file, $w) {
  list($width, $height) = getimagesize($file);
  $newwidth = $w;
  $newheight = ($w * $height) / $width;
  if (endsWith($file, '.png')) {
    $src = imagecreatefrompng($file);
  } else if (endsWith($file, '.jpeg') || endsWith($file, '.jpg')) {
    $src = imagecreatefromjpeg($file);
  } else if (endsWith($file, '.webp')) {
    $src = imagecreatefromwebp($file);
  } else if (endsWith($file, '.gif')) {
    $src = imagecreatefromgif($file);
  }
  $dst = imagecreatetruecolor($newwidth, $newheight);
  imagecopyresampled($dst, $src, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);

  return $dst;
}

$images = scandir(__DIR__.
  '/'.
  'uploads/'.$_SESSION['id']);
$images = array_values(array_diff($images, array('.', '..', 'comments')));

for ($i = 0; $i < count($images); $i++) {
  $img = $images[$i];
  $id = $_SESSION['id'];
  $imga = resize_image(__DIR__.
    '/'.
    'uploads/'.$_SESSION['id'].
    '/'.$img, 100);
  ob_start();
  imagejpeg($imga, NULL, 100);
  imagedestroy($imga);
  $imgb = ob_get_clean();
  $imgb = base64_encode($imgb);
echo << EOL;
  <option value="$img" data-icon="data:image/jpeg;base64,$imgb">$img</option>
EOL;
}

输出到div:

<div class="your-files input-field col s12 m6" id="your-avatars">
    <select class="icons">
        <option selected disabled value="default">Wybierz obrazek...</option>
        <!-- here comes the PHP output -->
    </select>
</div>

0 个答案:

没有答案