2011-06-11 96 views
10

这个问题令我困惑,所以我想我应该听专家的声音!php:将图像存储到Mysql blob中,好还是坏?

上传图片到一个文件夹,只保存链接到mysql,或更好地上传img本身到blob mysql字段是更好吗?

非常感谢你

+0

我觉得上传图片到一个文件夹,只保存链接到mysql是一个不错的选择。 – NewUser 2011-06-11 04:06:28

回答

20

我经常建立系统,以存储在数据库中的图像,也有利弊这样做。

优点:

    所有
  • 您的数据保存在一个地方,如果你迁移你的网站/数据库中的图像也只是有
  • 它更容易排序/删除/等...
  • 由于您必须通过PHP脚本来提供它,因此您可以执行其他事情,例如安全性(如果需要)或图像处理(显然,您也可以使用平面文件执行此操作,但必须确保安全性不会因离开而被绕过公共目录中的图像)。

缺点:

  • 它的速度较慢然后从网络服务器服务的平面文件作为PHP脚本需要找回它,和MySQL需要返回的数据。
  • 您的数据库将变得非常快,并不是所有的网络主机都会对此过于乐观。
  • 平面文件存储和检索的文件系统更快,因为这正是文件系统的设计目的。
2

不好。您的网络服务器可以更好地管理过期标题并直接从文件系统加载文件。使用文件系统的吞吐量会更高。这是它的设计目的,利用它。

SQL数据库是为关系数据而非图像设计的。你只是不必要地加载你的数据库。改为存储路径/图像名称。

+0

tyvm,我会做:)。 – Zalaboza 2011-06-11 04:55:40

+0

你说的对,我的朋友,但你如何计划保护图像文件在文件系统? – 2011-08-26 10:14:23

+0

保护他们?我认为你的服务器不会受到影响,或者你的图片比手头更难处理。目录权限可以让您的应用程序访问目录,但不能访问共享主机上的其他用户。 – Xorlev 2011-08-26 16:12:53

0

如果您的应用程序很大,即您必须重复显示大量/大小的图像,那么您应该选择第一种方法(仅在数据库中存储图像路径,并在文件系统中存储实际图像)。这将减少显示图像的处理时间,并且消耗更少的资源。其次,如果您的应用程序需要更少的图像数量,那么您可以将它们直接存储在数据库中这样,将备份和端口应用程序移植到另一个操作系统变得非常简单。

相关问题