4

私は最善の解決策についてしばらく考えていましたが、読んでいるほどますます混乱しています。さまざまなライブラリとヘルパーがたくさんあります (それらのほとんどは古くなっているか、CI 1.x 用です)。本当にあなたの助けが必要です。

CodeIgniter 2.1.3 に基づいたカスタム CMS を持っています。ニュース サイトのホームページには約 40 ~ 50 の画像がありますが、それらの 80% は 3 つの異なるサイズの非常に小さなサムネイルであり、残りの 20% はホーム上の画像です。ページには 2 つのサイズがあります + カテゴリからニュースを一覧表示する場合、内側のページには 1 つのサイズのサムネイルがあります。したがって、合計で、ニュース ストーリー用の元の画像と、ホームページ用の 5 ~ 6 個のサムネイル サイズが必要になります。

これに対処する最も賢い方法は何ですか?1 日あたり 10 ~ 50 の新しいニュースがあるとしましょう。

  1. アップロード中に画像ごとに 5 ~ 6 個のサムネイルを作成した方がよいでしょうか?
  2. 「オンザフライ」メソッドはどうですか?私が読んだように、私はこの方法にもっと興味を持っています. この方法はどうですか?それは良い習慣ですか?

これらの必要なものには、どのキャッシュ技術を使用する必要がありますか?

また、他の CMS システムがサムネイルの生成をどのように処理するかを尋ねるのを忘れていました。つまり、Wordpress、Drupal、Joomla などです。

事前定義されたサイズを保存しますか、それともその場で生成しますか?

私は彼らのロジックが最善であるべきだと思いますが、そうでないかもしれませんが、CodeIgniter CMS にスマートなものを実装したいと考えています。

言及しませんでしたが、これは重要ではないと思います。管理パネルには Grocery CRUD を使用しています。

どんな助けでも大歓迎です。

4

3 に答える 3

2

最善の策は、オンザフライでイメージを作成し、Amazon Cloudfront などの CDN を使用して、ソース イメージのサイズ変更されたバージョンをキャッシュすることです。

私は何年も CodeIgniter を使用して、さまざまなサイズの画像が Web サイト全体で使用されている Web サイトを構築してきました。最初は、アップロード プロセス中に元の画像から必要なすべてのサイズを作成していました (簡単に 5 つ以上のサムネイルが作成される可能性があります)。これにより、最高のパフォーマンスが得られることが証明されました。特定のサイズの画像が必要なときはいつでも、追加の PHP 処理なしで画像を含めるだけです。しかし、サーバー上に膨大な数の画像が残っていることに気付きました。古い画像はそれほど頻繁には使用されていない可能性があります (例: 1 年以上前の記事)。さらに、この方法での開発には時間がかかります。

次に、サードパーティのライブラリを使用してその場で画像を作成し始め、その後 CodeIgniter 用の独自のインターフェイスを開発しました。これにより、アップロード プロセス中にサイズ変更されたバージョンを気にせずに元のバージョンの画像を保存できるため、多くの時間を節約できます。フロント エンドで画像を表示する場合、通常行う必要があるのは、必要な画像の特定のサイズを渡すことだけです。このようにすると、イメージの 5 ~ 6 バージョンを取得できるだけでなく、必要な数だけ取得できます。また、異なるサイズの画像が必要になる可能性のある Web サイトを再設計するときの解決策にもなります! 5 つのサムネイル オプションのいずれも有効ではなく、別のサイズが必要な場合はどうしますか?

そうです、その場で画像のサイズを変更すると、実際には CPU を消費する操作になる可能性があるため (特に大きな画像が関係している場合)、キャッシュは必須です。サーバーに画像をキャッシュするか、その上に CDN を取得できます。サーバーを整頓しておくために、私は通常、cron ジョブを実行して、1 週間以上経過したオンザフライのイメージを削除します。それはスペースを節約し、害を及ぼすことはありません-画像を表示する必要があるときはいつでも、画像が再作成されます.

于 2012-11-10T13:40:44.310 に答える
2

timthumb を確認してください。これは、画像のサイズをその場で変更してキャッシュに保存するスクリプトです。URL にパラメーターを含むイメージ タグを含めるだけです。

また、有望に見えるこのリンクをチェックしてください http://www.jenssegers.be/blog/31/Codeigniter-resizing-and-cropping-images-on-the-fly-continued

于 2012-11-10T20:36:14.467 に答える
0

Drupalがこれを管理する方法が大好きです。Drupal 6には、imagecacheと呼ばれるモジュールがありました(現在はDrupal 7のコアにありますが、機能は非常に似ています)。これは基本的に画像のプリセット(画像サイズ、変換、効果など)を保存し、訪問者が画像を要求したときに表示されます。モジュールは、プリセットに基づいてさまざまな画像を生成し、この画像を提供します。このようにして、画像をアップロードしますが、目的ごとに異なる画像を使用します。

このモジュールには非常に便利な機能があります。1つのプリセットを変更する場合は、そのプリセットに関連するすべての画像を「フラッシュ」して、訪問者が変更を確認できるようにすることができます。

もちろん、Drupalには、透かしなどの他の効果を追加する、画像キャッシュまたは画像スタイルに関連する他の多くのモジュールがあります...

詳しくは:

于 2012-11-10T12:25:01.843 に答える