そのため、フォト ギャラリーを表示するためにログインが必要なサイトがあります。これらの写真を保護するために、それらを Web ルートの外に移動し、php スクリプトを使用して表示しました。このようなもの。
フォトギャラリー.php
echo '<img src="photo.php?id=X"/>';
写真.php
$id = (int)$_GET['id'];
$photo = getPhotoDataFromDb($id);
$path = DIRECTORY.basename($photo['filename']);
// Make sure photo file exists
if (!file_exists($path) || !is_file($path))
{
logError(__FILE__.' ['.__LINE__.'] No photo found in directory ['.$path.'] for photo id ['.$id.'].');
header('HTTP/1.0 404 Not Found');
return;
}
$info = getimagesize($path);
header("Cache-control: public, no-cache;");
header("Content-type: ".$info['mime']);
readfile($path);
Web ルート内のディレクトリから写真を通常どおり表示するよりも6倍から7倍遅いことを除いて、すべて正常に動作します。
だから、私の質問は次のとおりです。
- 私のコードに何か問題がありますか、またはこの方法は常により多くの時間を追加しますか?
- どうすればスピードアップできますか?画像を安全にキャッシュする方法はありますか? ギャラリー 2 はこれを何らかの方法で行っていると思います。