【问题标题】:php - store image on server best wayphp - 将图像存储在服务器上的最佳方式
【发布时间】:2012-08-13 16:20:07
【问题描述】:

我有一个使用 6 个不同参数生成图像的网络服务。该过程持续 1 秒。 我使用函数 ImageCreateFromPNG、ImageCopy 和 ImageJPEG 现在我想加快速度。 这个想法是保存已经在服务器上生成的图像,如果它们已经存在,则通过使用带有 6 个参数的名称来使用它们。 我的问题是: 有没有比将 jpg 文件保存在服务器目录中更好的方法来存储图像? (因为有 6^6(恕我直言 6 的 6 次方)组合可能性)

再见了

【问题讨论】:

    标签: php image


    【解决方案1】:

    将图像以老式文件形式存储在服务器上。

    将图像存储在数据库中效率不高,并且最终可能会带来比其价值更多的痛苦。将图像存储在一个文件夹中(甚至可能是他们自己的小文件夹)并按照正常方式链接到它们。这将允许用户轻松缓存图像,并且对您的服务器的影响最小。

    与查询数据库、提取信息、告诉用户什么数据是什么并每秒执行多次相比,从文件结构中提供文件所需的资源要少得多/分钟/小时/天。

    另一方面,如果这些是图像并且占用大量空间,您可能会考虑动态生成它们,直到您可以提供更多驱动器空间,但是如果可以的话,我会建议第一个选项。

    最后(可能也是最重要的 - 跳出框框思考),我不知道这些图像是什么样的,但您也可以考虑其他创建它们的方法。例如,它们可以平铺吗?与其存储数百张图像,您可以从 10 个片段中制作数百张图像吗?您甚至可以将它们原样发送给客户,而无需将它们连接起来,只需将它们排列在页面上,使它们看起来就像是一张图片 - 但现在只是在吐槽。

    【讨论】:

    • +1 表达了大多数开发人员的看法;)说真的,dbase 中的图像作为 blob 真的不是它应该的样子!
    • @KarmicDice 在数据库中?有没有人再用 dbase 做网页了?或者曾经做过?
    • @Sammaye 可悲的是,是的,他们这样做了,而且可能仍然这样做。我记得我惊恐地阅读了许多关于在数据库中存储图像是多么棒的教程......
    • 噢 dbase 是数据库的缩写吗?大声笑还有一个名为 dbase 的数据库,这就是我阅读它的方式:) dbase.com 实际上我们有时在这里使用的数据库:en.wikipedia.org/wiki/DBase
    【解决方案2】:

    我并不是要插入,但有一种有益的存储 atm 类型,GridFS。

    它基本上是一种将数据放入 MongoDB 的方法(我相信其他 DB 也有自己的存储机制)。

    主要缺点是速度,但主要优点是在您的网络(和全球)上分片和分发图像非常容易。您甚至可以将它们 ping 到 CDN 一段时间,以使它们更快。

    但是我应该说这是针对更大的网站。您的网站听起来像是一个普通的个人博客类型项目,所以我想说只是将图像存储在服务器上的目录中。

    然而,再一次,即使一直从目录中提供服务也会变得很痛苦,因此您可以设置某些缓存机制,例如永远不会使图像上的标头过期,以确保浏览器尽可能长时间地缓存它们。还要将它们缓存在您的网络服务器(如 Apache)中,因为我怀疑您是否会一直直接从您存储它们的目录中提供它们,并且在极少数情况下,您会想阻止恶意的人将他们肮脏的手指放在您的照片上因此,作为预防措施(与服务器端配置一起),您可能会使用服务器端语言或其他语言提供未缓存的图像。

    使用任何 GD 工具都会造成极大的负载和 CPU 负担,因此您想尽量少做,因为在这种情况下,几兆的文件存储空间比新实例更便宜,因为您的 CPU 受限于超级大图片。

    Google 上有更多建议和其他建议。例如来自 Google 的直击:http://developer.yahoo.com/performance/rules.html/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-10-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多