在 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();
现在我认为这种方法更好的唯一原因是因为它在服务器上发布更少的处理来下载图像。这是正确的还是不正确的,是否有更好的方法?
最佳答案
CDN 的重点是允许并行下载;一些 CDN 还支持从地理位置最近的位置下载 Assets 。您的方法使 CDN 变得无用,因为用户总是从您的服务器下载图像,因此您只是将其用作远程文件存储。
在您当前的方法中,用户必须等待您的服务器下载图像,然后再从您的服务器下载。与用户直接从远程服务器下载相比,它通常会更慢(假设您的服务器与远程服务器和用户的连接速度并不快)
如果你想从你的服务器下载文件,至少你可以缓存它,这样就不会每次都下载。
关于PHP 这是一种更好的方式来提供其 URL 存储在数据库中的图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19727766/