0

我正在为旅行者开发一个社区网站。经过大量用户测试,似乎“上传照片”是用户喜欢的主要方面。仅 3 位测试用户在 5 个月内提供了 4000 多张照片。我的问题是:如果我有 1000 个用户,我(或我的服务器)将如何正确管理它?在为这个潜在问题找到可靠的解决方案之前,我怀疑是否要退出测试版并向所有人开放它。

  • 我正在使用 PHP(主要是 CodeIgniter)
  • 图片上传并裁剪为 3 种尺寸(我将它们全部保存在服务器上)
  • 我使用 Cloudfare 来获得一些性能支持

如何优化这方面以避免服务器问题等?

  • 我不应该保存图像,而是用 PHP 渲染它们吗?
  • 缓存它们的最佳方法是什么?
  • 我应该使用外部服务上传/保存/维护这些照片吗?
  • ...

这是一个普遍的问题,但对我来说非常重要。我非常感谢你们提供的所有技巧和诀窍!

提前致谢!G

4

1 回答 1

0

我的建议:

  • 像现在一样,在上传所需的分辨率后直接调整它们的大小;一直在运行中渲染它们会占用大量 CPU。
  • 缓存:将它们作为常规文件存储在您的网络目录中,例如在 /images 中;然后您的网络服务器可以直接为它们提供服务。创建一个 2 级子目录结构,以防止一个目录中的大量文件。我建议从原始文件中获取 MD5 哈希,然后使用前 2x2 字节作为子目录,其余作为文件名。

例如,文件的 md5sum 是4ad5ec63e6c771a4f1c91e4d19bdf921并且您想要渲染 3 种分辨率(小、中、大)。然后将磁盘上的(调整大小的)文件命名为:

/images/4a/d5/ec63e6c771a4f1c91e4d19bdf921_s.jpg
/images/4a/d5/ec63e6c771a4f1c91e4d19bdf921_m.jpg
/images/4a/d5/ec63e6c771a4f1c91e4d19bdf921_l.jpg

将哈希存储在您的数据库中。

如果来自图像的流量显着增长,您可以考虑使用仅提供图像的单独服务器(例如来自http://images.domain.com/),从而减轻 PHP 服务器的负载。

于 2013-09-11T21:03:04.863 回答