我的網站上有很多圖像,當它們被請求保存我的託管服務器上的磁盤空間時,它們從圖像服務器拉到主服務器上。如果圖像不存在,自動重定向/下載 - 優化
要做到這一點我在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