3

在 PHP 应用程序中,我有这样的图像:

<img src="http://www.example.com/image/view/93029420" />

在后端,它执行以下操作:

$query = "SELECT img_url FROM images WHERE image_id = '93029420'";

$result = DB.findOne($query);

$contents = file_get_contents($result['img_url'] );
header('Content-Type: image/png');
echo $contents;
exit(); 

存储在数据库中的图像 url 是一个 cdn,如亚马逊。所以它可能就像https://images.mybucket.s3.com/slippers.png。使用这种方法显示图像或使用重定向会更好吗:

$query = "SELECT img_url FROM images WHERE image_id = '93029420'";
 $result = DB.findOne($query);
 header('Location: ' $result['img_url'] );
exit();

现在我认为这种方法更好的唯一原因是因为它在服务器上减少了下载图像的处理。这是正确的还是不正确的,有更好的方法吗?

4

1 回答 1

1

CDN的重点是允许并行下载;一些 CDN 还支持从地理位置最近的位置下载资产。您的方法使 CDN 无用,因为用户总是从您的服务器下载图像,因此您将其用作远程文件存储。

在您当前的方法中,用户必须等待您的服务器下载图像,然后从您的服务器下载。通常,与用户直接从远程服务器下载相比,它会更慢(假设您的服务器与远程服务器和用户的连接都没有更快的连接)

如果你想从你的服务器上下载文件,至少你可以缓存它,这样就不会每次都下载了。

于 2013-11-03T17:13:32.290 回答