2011-07-07 86 views
0

我有一个搜索引擎,其中每个产品项目可以有摘要的缩略图图像和详细视图的较大图像。保存和检索图像设计问题

当前图像id在Products表中存储为img_id和thumb_id,并且这些属性保存在Image表(width,height,type)中,需要连接才能构建图像标签。图像保存在一个子域中。

产品表有几百万行,但并非所有产品都有图像。

我应该不使用图像表,如果是的话,你会建议什么方法来获取图像?

也有被服务这个系统也有类似的表结构提前

感谢其他较小的产品catelogs。

我觉得什么即时寻找在这里How to store images in your filesystem

+0

您可以添加表格的定义以及您在应用程序中使用的确切查询吗? – Karolis

+0

顺便说一下,据我了解,你的主要缓慢问题是图像表的“左连接”,是的? – Karolis

+0

这就是问题的一部分。硬币的另一面是我重写图像上传例程。如果每次将新列表发布到系统中时都不必将其保存到图像表中,那么会节省大量开销/麻烦。 – gus

回答

0

你应该考虑的权衡之间的“最佳图像保存”不同类型(JPG,GIF等)和不同imageURLs对需要的所有安全这些信息分开。另一种方法是如下:

  • 安全每张图片为JPG,例如
  • 用作图像名称$ rowID_thumb.jpg和$ rowID.jpg
  • 以避免文件系统的问题(在某些文件系统无法处理大量数据),您可以创建一个目录集群,例如1/123/1234/123467.jpg,其中1234567是$ rowID
  • 考虑图像的固定尺寸避免需要节省宽度和高度。有足够的图像处理功能在PHP中获取所有图像到相同的大小

我不会存储图像的名称在数据库中以保存您的独立性;-)详细:你有一个商店项目与ID 123.对于这个商店项目存在一个正常的图像和缩略图(只有两个图像,否则我的建议不是最好的解决方案!)。我不会在数据库中存储关于图像的任何信息。相反,使用Shop Item的ID 123以编程方式生成文件名,例如getImagePathAndFilename($ id) - > 1/123/123.jpg。在上传过程中,您必须注意所有图像具有相同的尺寸以避免需要单独保存它们。

+0

是的我在考虑将每个文件保存为jpg.Thanks – gus

+0

保存列表时,它也会产生很大的差异,因为它会产生很多额外的开销,并且因为im当前正在重写该模块,所以我想改变它的另一个原因... – gus

+0

不是真的确定你的意思是“我不会将图像的名称存储在数据库中以保存您的独立性”。我只会存储实际的文件名而不是URL。 Url根据目录中存储的图像是动态的。这样,如果目录更改,我可以轻松更新URL $链接。 – gus