これは絶対に比較にならない問題です。
実際、その場で画像のサイズを変更することは、自分のサーバーで DoS 攻撃を実行するようなものです。1 つの通常の画像のサイズ変更には、php スクリプトへの通常の 1 つの要求を処理するよりも多くの CPU と RAM が必要です。それはすでにパフォーマンスに大きな影響を与えています。しかし、通常のサムネイルは単独で表示されるのではなく、数で表示されます。そのため、ギャラリー ページを 1 つだけ表示している間に、何十もの負荷の高いプロセスが作成され、サーバーの負荷が 10 倍以上増加します。
私の言葉を証明するための簡単で汚いテスト: 比較的小さい 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 時間が丸々 1 秒消費されます。適切に記述された PHP ギャラリー ページは約 0.01 秒かかります。そのため、その場でサイズを変更すると、サーバーの負荷が 100 倍になります。
記憶も同じ。各サイズ変更プロセスは、100M の合計で (100k の画像ファイルのサイズを変更するために) 10M 以上のメモリを消費します。PHP スクリプトの通常のメモリ制限はわずか 8M ですが、これに達することはめったにありません。
それが現実の数字です。
この問題に関連して、ちょっと面白いことがあります:
まったく同じ PHP ユーザーが、同時に1000000 の CPU サイクルを簡単に捨てて、1 つまたは 2 つの CPU サイクルを節約することに信じられないほど嫉妬しています! これはスピーチの図ではありません。ここに私が話していることの例があります:誰かから
の同様の質問で、定数、変数、または変数配列間の速度の違いと同じくらい無視できるほど大きな懸念があります。そして、そのような災害だけでは不十分であるかのように、最近、許可されたメモリサイズが使い果たされる問題に遭遇した人。
このサイトにはたくさんの質問と回答があり、あらゆる操作のナノ秒の速度の違いについて議論し、無尽蔵の尊厳で答え、数百万回の反復テストを実行して、それぞれ数 CPU サイクルのワンショット操作間の違いがまったく無視できることを示しています。
同時に、このような質問があります - 2 つのアプローチ間のパフォーマンスの面での比較にならない巨大な違いについて、著者には単に等しいように見えます。
それが、平均的な PHP ユーザーとこのサイトの問題です。
前者には、実物と微視的な物を区別する手段がありません。
しかし、後者には質問の健全性チェックのメカニズムがありません.2つの質問が互いに矛盾していても(そして両方とも常識に反していても)、全員が同じ熱意で答えました。