2010-04-28 41 views
1

在一個網站的用戶可以上傳圖片的圖片。出於安全原因,這些文件存儲在webroot(public_html)文件夾之外。當我需要顯示的圖片,我發送頭和具有「READFILE」讀取和輸出的圖像數據,像這樣:問題顯示了存儲公司外部網站的根文件夾

header("Pragma: public"); 
header("Expires: 0"); // set expiration time 
header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); 

header('Content-type: image/jpg'); 
header('Content-Length: ' . $filesize); 

readfile($path_url . '/' . $photo); 

這個偉大的工程,但該網站是越來越多,這已經開始成爲一個服務器的負擔。

問題:是有辦法圖片或圖片數據發送給用戶,而無需服務器首先具有(與仍然被存儲在根目錄的文件夾以外的圖像明顯)來加載圖像?

謝謝!

David

+0

你能在數字定義的「包袱」嗎? – 2010-04-28 19:38:19

+0

我很好奇......安全原因是什麼?是否有某些用戶不允許查看的照片?否則,如果所有圖像都是公開可見的......我不太確定這有什麼好處。 – mpen 2010-04-28 19:48:40

+0

@col。我很害怕,我沒有硬性數字。但是存在內存問題,服務器變慢,以及「資源使用量過大」消息。 – David 2010-04-28 19:54:17

回答

0

您可以將圖片存儲在SQL數據庫中嗎?

+1

我想我可以,但目前有超過1GB的圖片文件,並且mysql也相當負擔。這真的是一個改進? – David 2010-04-28 19:28:09

+1

假設他可以。所以呢? – 2010-04-28 19:37:11

+0

這不太可能讓事情變得更快。 – Tom 2010-04-28 19:44:50

0

你可以看看mod_xsendfile,一個Apache模塊,有時可以幫助在你們這樣的情況。否則,您可能需要考慮實施專用媒體服務器。

+0

這有什麼幫助? – 2010-04-28 19:38:39

+0

讓我再完成... – webbiedave 2010-04-28 19:42:02

+0

謝謝以及webbiedave,我得看看你的解決方案,以及。 – David 2010-04-28 19:59:14

1

如果您的問題真的來了就在這個地方,你不能使用HTTP緩存,有一個解決方案,代理網絡服務器。 nginx的與X-加速重定向或X-SENDFILE頭的lighttpd

+0

感謝上校,我會研究這個。 – David 2010-04-28 19:58:31

相關問題