【问题标题】:converting image to all sizes on upload vs resizing on request via php在上传时将图像转换为所有大小与通过 php 请求调整大小
【发布时间】:2020-02-14 22:21:28
【问题描述】:

所以我为用户提供了一个平台,允许他们上传大量图片。目前,我让我的服务器调整大小并将所有图像单独保存到我的 CDN (这样我可以选择最佳选项以减少用户请求查看它时的加载时间),但似乎在服务器存储方面非常浪费。

图像正在转换为 1200 像素、500 像素、140 像素、40 像素和 24 像素的分辨率。

我想知道的是,将文件保存为 1200 像素,然后使用 ImageMagick 之类的东西通过 PHP 以请求的大小提供它会更有效吗?是否会有任何重大的取舍,如果是,是否值得?

我现在在做什么:

https://v1x-3.hbcdn.net/user/filename-500x500.jpg

我可以做的一个例子:

https://v1x-3.hbcdn.net/image.php?type=user&file=filename&resolution=500

干杯。

【问题讨论】:

  • 您的提议与所有性能优化一样,是一种权衡。是的,您将节省服务器空间,但这会以请求时间和 CPU 利用率为代价,因为您需要在每个请求上调整图像大小。如果您还没有在文件系统上缓存图像,您可以通过仅按需调整图像大小来降低此成本。一般来说,服务器磁盘空间基本上是空闲的,所以你应该有充分的理由在这方面优化大小。
  • 我必须承认这是个好问题,但这听起来是基于意见和本地化的。看看答案吧,值得一读。
  • 您可以使用 Imagemagick 在一个命令行中一次读取图像中调整大小并保存为您想要的所有大小。请参阅imagemagick.org/Usage/files/#write 命令行中的括号处理。您可以编写一个脚本,然后在上传时处理每个图像

标签: php image-processing image-resizing


【解决方案1】:

不,不是,因为:

  1. 您的尺码数量很少

  2. 如果您不使用缓存(仅在第一次请求时生成图像),您可以自己进行 DDOS(图像处理受 cpu 影响)

  3. 如果要使用 Cloudflare 之类的 CDN 进行 HTTP 缓存,则必须做额外的工作

如果您有很多尺寸的图像,这是有意义的,例如,支持多个 Andoid/IOS 设备的 API,这意味着 iphone 3 仅支持 320x320 图像,如果您没有使用此类设备的用户,您的服务器永远不会创建此类图像.

建议:

在图像生成过程中,使用optimization 它会减小图像大小,但质量损失是难以察觉的。

【讨论】:

  • 这个。按需调整大小是将 F5 按钮从“刷新”更改为“DoS”的好方法。
猜你喜欢
  • 2013-04-01
  • 2013-09-19
  • 2014-03-14
  • 2015-07-13
  • 2013-08-01
  • 2011-01-10
  • 1970-01-01
  • 2010-09-20
相关资源
最近更新 更多