这绝对是无与伦比的事情。
事实上,动态调整图像大小就像在您自己的服务器上运行 DoS 攻击一样。调整一张常用图像的大小比为 php 脚本提供一个常用请求需要更多的 CPU 和 RAM。这已经对性能产生了巨大影响。然而,通常的缩略图不是单独显示,而是以数字形式显示。因此,虽然只显示一个图库页面,但您正在创建数十个重负载进程,从而使服务器负载增加十倍或更多。
快速而肮脏的测试来证明我的话:
让我们尝试调整相对较小的 1.3 兆像素图像的大小
$ /usr/bin/time --format="%MK mem %Es CPU time" /usr/bin/convert angry_birds_1280x800.jpg -resize 100x100 thumb.jpg
10324K mem 0:00.10s CPU time
我们花了 0.1 秒,因此,显示 10 个图像预览将占用您整整一秒的 CPU 时间。正确编写 PHP 画廊页面大约需要 0.01 秒。因此,当您动态调整大小时,服务器负载会增加 100 倍。
与记忆相同。每个调整大小过程将占用不少于 10M 的内存(调整 100k 图像文件的大小!),总内存为 100M。而PHP脚本通常的内存限制仅为8M,而且很少达到。
那是现实生活中的数字。
与这个问题相关的一件有点有趣的事情:
完全相同的 PHP 用户谁轻易地扔掉了 1000000 个 CPU 周期,同时又难以置信地嫉妒节省 1 或 2 个 CPU 周期!这不是修辞手法,这是我正在谈论的一个例子:
A 类似的问题 https://stackoverflow.com/questions/9464618/on-the-fly-thumbnail-resize-generation-of-images/来自某人,他的极大的关心同时在微不足道的事情中常量、变量或变量数组之间的速度差异 https://stackoverflow.com/questions/7766486/which-is-faster-constants-variables-or-variable-arrays。还有谁最近遇到允许的内存大小耗尽的问题 https://stackoverflow.com/questions/9432810/fatal-error-allowed-memory-size-in-php-when-allocating-less,好像这样的灾难还不够。
这个网站上有大量的问题和答案,争论任何操作的纳秒速度差异,并以无尽的尊严回答,运行数百万次迭代的测试,以显示每个 CPU 周期的一次性操作之间的差异绝对可以忽略不计。
同时也存在这样的问题——两种方法在性能方面存在巨大的、无可比拟的差异,而这在作者看来只是相同的。
这就是普通 PHP 用户和这个网站的问题。
前者只是没有能力区分真实事物和微观事物。
然而,后者没有对问题进行健全性检查的机制 - 每个人都以同样的热情回答,即使两个问题彼此矛盾(并且都具有常识)。