5

私は最善の解決策についてしばらく考えていましたが、私が読んでいる限り、私はますます混乱しています。さまざまな図書館やヘルパーがたくさんあります(そのほとんどは古くなっていますが、CI 1.x用です)、本当に助けが必要です。ニュースウェブサイト(codeigniterベースのカスタムCMS)で画像のサムネイルを処理する最も良い方法は?

CodeIgniter 2.1.3のニュースサイトで、ホームページに約40-50枚の画像がありますが、その80%は3種類のサイズのサムネイルがあり、残りの20%はホームページの画像は、サムネイルのサイズが1つであるカテゴリからニュースをリストすると、内側のページに対して2つのサイズ+になります。合計で、ホーム・ページのサムネイル・サイズが+ 5-6のニュース・ストーリーの元のイメージが必要になります。

これに対処する最もスマートな方法は何ですか? 1日に10-50の新しいニュースがあります。

  1. アップロード中に画像ごとに5〜6個のサムネイルを作成する方が良いですか?
  2. "オンザフライ"の方法はどうですか?私が読んだところでは、最初の訪問者だけがサムネイルを生成するためにライブラリ/ヘルパーに電話をかけ、他のものはサムネイルがすでに作成されてCPUを無駄にしないようにする方法です。この方法はどうですか?それは良い練習ですか?

私はこれらのためにどのようなキャッシング手法を使用する必要がありますか?

また、他のCMSシステムがサムネイルの生成をどのように処理するのか尋ねていませんか? Wordpress、Drupal、Joomlaなどを意味します。

あらかじめ定義されたサイズが保存されているのか、その場で生成していますか?

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

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

何か助けていただければ幸いです。

答えて

0

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

このモジュールには本当に便利な機能があります。プリセットを変更したい場合は、そのプリセットに関連するすべての画像をフラッシュして、変更を見ることができます。

もちろん、透かしのような他の効果を追加したスタイルを、のImageCacheまたは画像に関連のDrupalの他の多くのモジュールが...ある

詳細情報:

2

あなたの最善の策は、画像を即座に作成し、Amazon CloudfrontのようなCDNを使用して、サイズ変更されたversioをキャッシュすることですあなたのソースイメージのns。

私はCodeIgniterを長年使用していて、ウェブサイト全体でさまざまなサイズの画像が使用されているウェブサイトを構築してきました。最初は、アップロード処理中に元の画像から必要なサイズをすべて作成していました(5つ以上のサムネイルで簡単に終わることがありました)。これは最高のパフォーマンスを提供することが判明しました。特定のサイズの画像が必要なときは、追加のPHP処理なしでその画像を含める必要があります。しかし、私は、古いものが頻繁に使用されないかもしれないサーバー上の膨大な数の画像で終わることに気付きました(例えば、年より古い記事)。この方法を開発すると時間がかかります。

次に、私はその場で画像を作成し始めました。まず第三者のライブラリを使用し、後でCodeIgniter用の独自のインターフェイスを開発しました。これにより、アップロードプロセス中にサイズ変更されたバージョンを気にせずにイメージの元のバージョンを保存するので、多くの時間を節約できます。フロントエンドに画像を表示する場合、通常必要なのは、必要な画像の特定の寸法を渡すことだけです。このようにすると、画像の5-6バージョンを取得できるだけでなく、必要なだけ多くのバージョンを取得できるようになります。また、異なるサイズの画像が必要なウェブサイトを再設計する際のソリューションです。あなたの5つのサムネイルオプションのいずれも無効で、サイズが違う場合は何をしますか?

あなたはそうです、その場で画像のサイズを変更することは、実際にCPUを消費する操作(特に大きな画像が含まれている場合)があるため、キャッシュは必須です。サーバー上でイメージをキャッシュするか、その上にCDNを取得することができます。 サーバーをきれいに保つために、私は通常、1週間と言うよりも古い画像を削除するためにcronジョブを実行します。それはスペースを節約+害を引き起こすことはありません - 表示する必要があるたびに、それはちょうど再作成されます。

+0

私は今、どのようにそれを行うための最善のことを行う方法とは何かを教えてください、より多くの「オン・ザ・フライ」の方法によ、なぜこれが正確です、使用するライブラリ、使用方法など – MarkC

+0

あなたはこれで遊ぶことができます:http://phpthumb.sourceforge.net/。しかし、私はそれがかなり重いライブラリであることを発見し、それは少しの処理オーバーヘッドを引き起こす可能性があります。私はCodeIgniterのために公開されているthetheflyライブラリを知っていません。自分で書いています。あなたがそれを見たいと思ったら私にメッセージしてください。それ以外の場合は、特に、CI用ではなく、ネイティブPHP用のライブラリを探すことができます。それらは容易に統合可能でなければならない。 – Aidas

+0

私は以下のCIのために特別にlibにリンクしました – stef

関連する問題