2010-04-28 45 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