1

我有一个我正在用 PHP 构建的应用程序,它根据给定植物物种的图像数量从数据库中调用照片。我让脚本将原本较大的照片调整为 100x100。这个过程真的需要一点页面加载时间,我的计算机的 CPU 达到 100% 并且工作非常努力。

我认为这是因为所有图像都在一次加载......有没有办法让它们只有在前一个完成时才加载?或者有没有更有效的方法来渲染这样的图像?这是加载它们的片段:

$imagesArray = explode(", ",$images);
unset($imagesArray[count($imagesArray)-1]); // get rid of the last array key which is blank.
echo '<tr><td>Images:</td><td>';
foreach ($imagesArray as $imgloc)
{
  echo '<a target="_blank" href="plant_images/'.$imgloc.'"><img src="plant_images/'.$imgloc.'" width="100" height="100" alt="'.$row[2].'" title="'.$row[2].'" /></a>&nbsp;';
}

这是页面中部分加载的图像的屏幕截图(这比其他时候发生的要好得多!说真的,有些物种有 10-12 个图像,我的电脑需要大约 15 秒才能加载页面,很痛苦)

http://www.captainscall.site11.com/temp_stuff/slow-img.png

我已经发现了这个,有点帮助。谢谢你, Khanahk

4

2 回答 2

2

用户浏览器通常会缓存图片,这样用户在第一次访问页面时只会遇到加载缓慢的情况。

但是,您应该考虑拥有正在显示的所有图像的缩略图。您不需要自己制作这些缩略图,在 2013 年我们有电脑可以做到这一点。

一个快速的谷歌搜索可能会给你一些软件,可以立即为你的所有图片制作调整大小的副本,或者如果你知道一些编码,你可以为此编写自己的脚本。例如,您可以在 PHP 中使用 Imagick(参见http://php.net/manual/en/imagick.scaleimage.php)。然后只需在您的服务器上存储两种尺寸的图像,一种用于缩略图,另一种具有更高的分辨率。

这样做的一个好处是您将减少从您的服务器传出的数据(如果您的服务器有很多独特的访问者,由于图像的大小将会有很多流量)。此外,您的用户将体验到更少的网站加载时间(正如您所说,等待图像加载很无聊)。

你可能可以用javascript告诉浏览器以什么顺序加载图像,但这不能解决你的问题,主要是你的图像太大了。

于 2013-03-15T02:48:40.433 回答
2

我想你应该:

  • 服务端:已经生成的图片需要缓存,下次可以使用缓存版本。您可以创建一个物理图像文件以供下次使用。

  • 客户端:您可以使用库来延迟加载图像

于 2013-03-15T02:54:44.927 回答