Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Image 管理网站用户照片的最佳方式是什么?_Image_Storage - Fatal编程技术网

Image 管理网站用户照片的最佳方式是什么?

Image 管理网站用户照片的最佳方式是什么?,image,storage,Image,Storage,我的问题是关于显示缩略图和存储 假设我有一个网站,用户可以上传照片并在相册中查看 在这种情况下,照片通常是如何存储的?图像本身还是文件路径通常存储在数据库中 如果照片很大,并且您希望显示缩略图,是否最好: 是否保存图像副本和缩小的图像,仅在需要时显示较大的图像 使用HTML缩小尺寸 一些软件(如TikiWiki)将照片存储在数据库中。然后,它还会在数据库中缓存缩略图大小的照片 其他软件将其存储在一个目录中。Gallery2就是这样运作的。我发现目录方法更具可伸缩性。如果请求的大小与原始大小不同

我的问题是关于显示缩略图和存储

假设我有一个网站,用户可以上传照片并在相册中查看

在这种情况下,照片通常是如何存储的?图像本身还是文件路径通常存储在数据库中

如果照片很大,并且您希望显示缩略图,是否最好:

  • 是否保存图像副本和缩小的图像,仅在需要时显示较大的图像
  • 使用HTML缩小尺寸

一些软件(如TikiWiki)将照片存储在数据库中。然后,它还会在数据库中缓存缩略图大小的照片

其他软件将其存储在一个目录中。Gallery2就是这样运作的。我发现目录方法更具可伸缩性。如果请求的大小与原始大小不同,应用程序通常会使用ImageMagick调整照片大小,然后存储调整大小的照片的副本


另一种选择是将照片重新上传到S3之类的服务,而不在本地存储照片。

一些软件(如TikiWiki)将照片存储在数据库中。然后,它还会在数据库中缓存缩略图大小的照片

其他软件将其存储在一个目录中。Gallery2就是这样运作的。我发现目录方法更具可伸缩性。如果请求的大小与原始大小不同,应用程序通常会使用ImageMagick调整照片大小,然后存储调整大小的照片的副本


另一种选择是将照片重新上传到像S3这样的服务中,而不在本地存储照片。

这是一个常见的问题,基本答案是这取决于具体情况。你需要提供更多的信息。您计划使用什么数据库?SQLServer2008有一些很好的新特性,可以通过FILESTREAM函数处理这种情况。一般来说,我更喜欢将它们放在数据库中,但如果您只是将它们放在数据库中,而不考虑设计和访问要求,那么随着照片数量的增加,您的性能可能会很差。

这是一个常见的问题,基本的答案是,这取决于具体情况。你需要提供更多的信息。您计划使用什么数据库?SQLServer2008有一些很好的新特性,可以通过FILESTREAM函数处理这种情况。一般来说,我更喜欢将它们放在数据库中,但如果您只是将它们放在数据库中,而不考虑设计和访问要求,那么随着照片数量的增加,您的性能可能会很差。

如果您绝对肯定您的web服务器将始终能够访问承载图像的文件系统,那就走那条路。也许吧

但是,如果在任何时候您认为您可能需要创建一个映像服务器,我不知道,因为您的web服务器上的硬盘空间不足,或者您需要运行多个web服务器,那么请省去麻烦并将它们存储在数据库中。在文件系统中存储的难点是跨网络的安全要求

此外,请记住,并非所有数据库服务器在这方面都是平等的。SQL 2008引入了一种FILESTREAM数据类型,它实际上将映像存储在本地文件系统上,同时允许通过db服务器进行所有读/写访问。这样做的另一个好处是允许您在存储期间对传入文件运行病毒扫描程序

甲骨文有一些不错的文件存储设施已经有一段时间了。MySQL?我不想尝试,但你可能会没事的


至于第二个问题:将缩略图与图像一起保存。每个图像只执行一次此过程,并节省了演示带宽。使用HTML缩小图像的大小对客户端来说真的没有任何作用。

如果您绝对肯定您的web服务器将始终能够访问承载图像的文件系统,那么就这样做。也许吧

但是,如果在任何时候您认为您可能需要创建一个映像服务器,我不知道,因为您的web服务器上的硬盘空间不足,或者您需要运行多个web服务器,那么请省去麻烦并将它们存储在数据库中。在文件系统中存储的难点是跨网络的安全要求

此外,请记住,并非所有数据库服务器在这方面都是平等的。SQL 2008引入了一种FILESTREAM数据类型,它实际上将映像存储在本地文件系统上,同时允许通过db服务器进行所有读/写访问。这样做的另一个好处是允许您在存储期间对传入文件运行病毒扫描程序

甲骨文有一些不错的文件存储设施已经有一段时间了。MySQL?我不想尝试,但你可能会没事的


至于第二个问题:将缩略图与图像一起保存。每个图像只执行一次此过程,并节省了演示带宽。使用HTML缩小图像的大小对客户端来说真的没有任何作用。

将图像存储在数据库中几乎总是一个坏主意。BLOB确实会减慢数据库的运行速度。它还限制了您在不同驱动器上分散存储的能力。当文件是独立的时,您甚至可以拥有一个或多个独立的映像服务器,以减少主动态服务器上的负载。我的建议是:

  • 在数据库表中,为映像所在的目录和映像名称设置列。这样,您就可以自由地更改图像的存储位置、循环驱动器、稍后添加更多存储并将新图像放入新存储中,或者您想要的任何内容。将路径和文件名存储在单独的字段中,使得将图像从一个目录移动到另一个目录变得非常简单

  • 您肯定希望生成缩略图以减少网络带宽并使应用程序运行更快。但是,您可以根据需要或在系统负载较低时生成缩略图。如果