【问题标题】:php gallery file i/o or database i/o? the displaying of large image volume on website.php 库文件 i/o 或数据库 i/o?在网站上显示大图像量。
【发布时间】:2013-09-12 12:59:42
【问题描述】:

过去几天我一直在从事一个项目,但在网站某个区域的画廊中显示大量图像(总共 +20gb ~1-2gb/目录)时遇到了问题。该站点建立在引导框架之上。我一直在尝试制作大型轮播,但由于 /images 的大小组合,最终无法流畅运行。

  • 问题 A:在这种情况下,我是否需要来自数据库的 i/o 并在其中存储图像——这是否比前端的 /images 文件夹中更快?
  • 并且 b) 在我的 php 脚本中,我需要将目录设置为变量/遍历并在
  • 中显示图像,但是如何控制内存使用以不使浏览器过载?任何补充、建议或替代方案将不胜感激。我正在寻找最直接的方式来结束这里。
  • 【问题讨论】:

    • a) 不要将图像放入数据库以提高性能。 b)它如何处理图像完全取决于您的轮播。您最好找到一个可以按需智能加载新图像的工具

    标签: php mysql twitter-bootstrap image-gallery photo-gallery


    【解决方案1】:

    虽然这个问题有点笼统,但以下是关于您的两个问题的一些想法:

    A) 不,从数据库中提取图像的性能很可能比直接从文件系统中提取图像要差。一般来说,除非绝对必要,否则将图像或其他二进制数据存储在数据库中并不是一个好主意,因为数据库无法处理这些信息,而您只是在文件系统之上添加了一个额外的层,它不会不需要在那里。但是,您可能希望将图像的 paths 存储在数据库中,并可能与图像尺寸、缩略图路径、关键字等其他特征一起存储。然后您的应用程序将读取图像的条目以返回图像的正确路径。

    B) 如果您要显示成百上千张照片,您几乎肯定会想要实现某种分页。如果最终显示必须是轮播,您将需要研究驱动它的 Javascript,以确定如何挂钩一个函数,该函数在到达结尾或接近结尾时通过 AJAX 调用从 PHP 应用程序中检索更多结果当前的图像列表。如果由于图像过多而导致浏览器崩溃,您还需要在加载新图像时从<li>s 列表的第一部分中删除图像,以便控制 DOM。

    【讨论】:

      【解决方案2】:

      A) 将这么多二进制数据存储到数据库中是个坏主意,即使数据库允许,您也不应该使用它,它还会给您带来更多内存消耗,你所有的数据都会存储在数据库的内存空间中,然后复制到PHP的内存空间给你处理,这会吃掉两倍的内存,加上运行数据库服务器的开销,查询等等。所以不,是使用数据库更慢,直接访问文件系统更快,如果您还使用 varnish 或其他前端缓存系统,您甚至可以更快地提供内容。

      我要做的是将文件存储在文件系统上,处理此类静态服务的最佳服务器是 G-WAN 或 NGINX Source,但请仔细阅读并自己决定最适合您的服务器。关键是,远离 apache,可能将所有这些静态文件托管到运行轻量级 http 服务器的单独服务器上

      专业提示:保存同一张图片的多个副本,按比例缩小,例如 50%,另一个版本按原始图片大小的 25%,这样您就可以发送缩略图首先是为了快速浏览,然后当用户决定查看您提供的图像时,您提供 50% 或 100% 的大小,具体取决于他们的屏幕大小,这样您就可以节省带宽和内存。您还可以为移动用户节省一大笔 3G 费用。

      B) 这就是使用数据库的意义所在,您可以将所有目录索引到数据库中,并使用它来存储图像在 FS 中的位置,也许一些标签,甚至可能是观看次数等......

      在前端,您将实现一个 scipt,例如每页获取 50 个缩略图,然后用户可以使用一些花哨的 JQuery 滚动,当您需要获取更多内容时,只需获取一个包含 50 个的新结果集更多的拇指,等等。

      这样您将节省自己的内存、带宽,甚至用户也会感谢您提供如此轻量级的浏览体验!

      另一个提示: 如果您希望能够处理更大的流量,您可能需要考虑使用 CDN,有很多 CDN 服务不像 Amazon S3 那样昂贵,一个简单的搜索就会为您提供大量资源!

      黑客愉快!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-01-13
        • 1970-01-01
        • 2015-05-24
        • 2018-02-03
        • 2012-05-01
        • 2010-12-25
        相关资源
        最近更新 更多