我使用的是Apache,当我第一次直接请求图像时,图像的状态为“200 OK”。后续请求的状态为“304未修改”,这很好,因为它为客户端和服务器都节省了带宽。PHP:在Webroot和缓存之外流式传输图像
我正在开发一个可以让用户上传图片的网站。这些图像需要存储在webroot之外,不仅可以防止盗链,还可以收集图像统计信息。所以我的想法是使用PHP脚本像这样流图像:
<?php
$image_to_stream = '/path/outside/of/webroot/image.jpg';
$cache_seconds = 2592000; // 30 days
header("Cache-Control: max-age=$cache_seconds");
header('Expires: ' . gmdate('D, d M Y H:i:s', time() + $cache_seconds) . ' GMT');
header('Pragma: cache');
header('Content-Type: image/jpg');
header('Content-length: ' . filesize($image_to_stream));
readfile($image_to_stream);
?>
然而,剧本似乎总是有“200 OK”状态,而且整个图像获取流。有没有办法解决这个问题,或者我应该采取另一种方法或什么?谢谢!
这工作!非常感谢你! – Nick 2012-03-23 20:26:11
但是,如果你想节省带宽,那么*不要忘记提供新的缓存控制/过期头!* – symcbean 2012-03-23 22:46:50
@symcbean,同意! – Brad 2012-03-23 22:57:56