我的网站上有很多图像,当它们被请求保存我的托管服务器上的磁盘空间时,它们从图像服务器拉到主服务器上。如果图像不存在,自动重定向/下载 - 优化
要做到这一点我在01文件中的条目,基本上内部重定向人从/images/image.jpg
到download.php
进行检查,看是否该文件存在。如果文件存在,它会提供它(下面的代码),否则它将使用CURL
来拉入远程文件,然后重定向到它自己header("Location: ".$_SERVER['REQUEST_URI']);
,以便它显示图像。
以这种方式向浏览器提供图像效率不高吗?让Web服务器自然而然地做得更快?阅读和显示文件的代码如下。
$file_extension = strtolower(substr(strrchr($filename,"."),1));
header("Pragma: public");
header("Content-Type: image/jpg");
header("Content-length: ".filesize($filename));
header("Content-Transfer-Encoding: binary");
header("Content-Length: ".filesize($filename));
readfile("$filename");
我会变得更好(阅读:更有效)不使用htaccess的重定向,但实际修改我的404页,以检查图像的确定404的,然后将它们下载?
这里是定义重定向到download.php
^images/([0-9]+)_([a-z0-9_]+).jpg$ /download.php?id=$1
在.htaccess中检查文件存在是一个非常好的主意,关于从哪里开始的想法?什么是X-SendFile? – Chris 2010-10-07 18:15:00
我试图使用X-Sendfile(这看起来很棒btw!)但它没有工作lol – Chris 2010-10-07 18:22:02
我编辑了我的答案与htaccess示例和X-Sendfile的解释。如果您对X-Sendfile有任何问题,请检查phpinfo()以确保它已启用,并检查Apache错误日志是否仍然无效。 – 2010-10-07 18:31:31