所以我有一个需要登录才能查看的网站,它有一个照片库。为了保护这些照片,我将它们移到了 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);
一切正常,除了这比从网络根目录中正常显示照片慢6到7倍。
所以,我的问题是:
- 我的代码有问题吗,还是这种方法总是会增加更多时间?
- 我怎样才能加快速度?有没有一种安全的方法来缓存图像?我相信画廊 2 会以某种方式做到这一点。