如何加快外部图像加载?

时间:2011-02-10 16:25:59

标签: php image performance loading

我有一个数据库,用于存储项目和每个项目的图像链接。现在图像无法在本地存储(也没有足够的空间和其他原因),所以我链接到其他服务器上的图像。

当我不想显示项目(带有它的图像)时,我使用mysql_fetch_array运行while语句(简化):

$result = mysql_query("SELECT * FROM items");

while($row = mysql_fetch_array($result)) {

echo "<h1>".$row['name']."</h1>";
echo "<img width='200' src='".$row['img']."' />";

}

但是图像加载需要永远,因为一些外部图像尺寸很大,但我只需要200px宽。

有没有办法在旅途中缩小图像,或者加速加载?

(使用php / html)

谢谢,迈克。

4 个答案:

答案 0 :(得分:2)

你在旅途中做的任何事情都会更慢,因为要调整图像大小,你必须先下载它。

可以调整图像大小并保存较小的版本,这样做非常简单。文档和评论here中有很多示例。

但是,如果您保存较小的图像并从服务器(或其他可以放置它们的地方,如Amazon S3)在未来的请求中提供服务,那么您只能从中获益。

您可以编写一个快速脚本,使您的数据库引用的每个图像的较小版本脱机,然后开始提供它们,而不是编写指向远程版本的<img>标记。

答案 1 :(得分:1)

没有

图像是特定(文件)大小,并存储在您无法控制的位置。

为了减小尺寸,您必须将数据传输到您控制的地方 - 这与传输到浏览器所花费的时间大致相同(之后您必须花时间编辑图像,然后将时间传输到浏览器。)

答案 2 :(得分:0)

没有直接的方法可以动态调整图像大小,因为它需要大量的CPU计算,所以只需更简单的服务完整的res图像并让浏览器调整它的大小。

如果您决定要调整服务器上的图像大小,然后服务器降低res图像,则可以使用this PHP类。我使用起来非常简单并且工作得非常快。

希望这有帮助。

答案 3 :(得分:0)

如果你拥有图像的外部位置并且有很多图像,我会创建一个缩放功能。

E.g:

"domain.com/yourimage?w=200"

其中"w"是宽度,告诉服务器在检索它之前调整它的大小。