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 は、amazon などの 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 に答える