2010-06-06 109 views
0

首先,这不是关于在数据库和文件系统上存储图像的另一个问题。我已经将图像存储在文件系统中。我只是在努力寻找一种更好的方式向所有用户展示他们。在CMS上存储和传递文件的最佳方式

我目前正在使用这个系统。我生成使用MD5随机文件名(UNIQUEID()),是我面临的问题,是图像,然后用这样的链接呈现:

<img src="/_Media/0027a0af636c57b75472b224d432c09c.jpg" /> 

正如你可以看到这是不是最漂亮的方式来显示图像(或文件),并且该名称没有提及图像的任何内容。

我一直在工作中一个CMS系统,存储所有上传到一个单一的表文件,访问图像,它使用这样的事情:

<img src="../getattachment/94173104-e03c-499b-b41c-b25ae05a8ee1/Menu-1/Escritorios.aspx?width=175&height=175" /> 

正如你所看到的路径这个图像现在与另一个图像相比具有意义,问题在于这个图像在数据库中有很大的压力,例如,在我制作的最后一个网站中,我有一个区域有大约60张图像,以显示60图像,除了其他查询来检索页面上的各种内容,我必须对数据库执行至少60个单独的查询。

我想你明白我的困境,有没有人经过这个问题,可以给我一些关于如何解决这个问题的指导?

谢谢..

+0

为什么你必须使用一个单一的查询数据库来检索60条记录? – thetaiko 2010-06-06 14:26:44

+0

事实上,这将是最好的方式来检索60条记录,我的意思是如果我使用.htaccess和一个PHP文件,我必须使60查询检索每个图像。这是不是一个好的选择.. – Tio 2010-06-08 11:04:11

回答

0

你总是可以使用的.htaccess重写URL和剥离友好名称。所以,把你的例子,你可以显示图像源,就像这样:

/Media/0027a0af636c57b75472b224d432c09c/MyPictures/Venice.jpg 

你可以使用htaccess的实际要求:

/Media/0027a0af636c57b75472b224d432c09c.jpg 

另一种选择是有一个完全友好的名称:

/Media/MyPictures/Venice.jpg 

并将其重定向到PHP文件,该文件检查url并生成散列,以便它知道服务器上的实际映像文件名。 PHP脚本应该设置内容类型,读取图像并输出。这种方法的主要缺点是,当两张图像可能具有相同的散列值时,最终可能会发生冲突。鉴于目前的方法也会出现同样的情况,我认为这不是问题。

+0

我用来生成文件名的确切代码是md5(uniqid(rand(),true)),我认为有相同的散列很难。即使MD5中发生了一些碰撞.. .. .. 谢谢..这是我想要做的一种方式,那种不觉得正确的事情是我必须做的查询次数。 – Tio 2010-06-06 13:51:22

+0

请记住,每个图像调用是到服务器的另一个连接。如果你有10张图片,你将在服务器上运行60个PHP进程。您将耗尽内存而不支持太多的并发用户。 – 2010-06-06 14:07:23

+0

布伦特,谢谢你的头.. ..这绝对不是路要走..我要使用第一个选项Yacoby已经显示,只需做一个简单的URL重写,没有涉及PHP页面..谢谢。 。 – Tio 2010-06-08 11:05:28

相关问题