パフォーマンスは全てのサイトによって重要なものです。あなたのコミュニティの成長に伴ってサイトのパフォーマンスを最適化する必要が出て来た際にこのガイドが助けになることを願っています。

ホスティング

サーバーというのはウェブサイトの高速化において最も重要な部分です。パフォーマンス向上への道はホストサーバーとハードウェアから始まります。

機能が豊富で堅牢なApacheのようなサーバを使用しているか、もしくはより非常に効率的な Nginx を使用するようにしてください。ですが PHP や MySQLが動作可能なサーバーであればとりあえずは大丈夫です。

あなたのコミュニティが大幅に成長し始めた場合は、1日あたり大量のユーザーと投稿を処理できるように、ホスティング環境を仮想プライベート サーバーか専用サーバーにアップグレードしてください。bbPressは共有サーバーでも動作可能で小規模なコミュニティであれば非常に上手く動作するのですが、コミュニティが成長するほどサイトの速度が低下して共有ホスティングは実行可能な選択肢ではなくなります。

bbPress と WordPress はリッチなホスティング環境において最高な動作をします。ホストを考慮して推奨ソリューションを探すにはこの 注目WordPress ホスト一覧を参照してください。

Opcodeキャッシュ

パフォーマンスを向上させる優れた方法はサーバーに Opcode キャッシュソフト をインストールすることです。これは以前のリクエストから PHP opcodeをキャッシュすることで1秒当たりのページの読み込みやリクエストを向上させます。

Opcode キャッシュソフトをインストールするには、ホスティング プロバイダーに連絡してインストールを依頼するか、サーバーへのインストールに役立つガイドがあるかどうか確認する必要があります。

Opcode キャッシュソフトを実行するには大量のメモリが必要となるため、ほとんどの場合Opcode キャッシュソフトを共有ホストにインストールすることはできないことに知っておいてください。

以下は有名なOpcode キャッシュソフトの一覧です:

オブジェクトキャッシュ

オブジェクトキャッシュでは複雑なSQLクエリをキャッシュするので、ページの読み込みでそれらが複数回実行されることが無くなります。オブジェクトキャッシュソフトを使用するとWordPressキャッシュAPIを利用してあらゆるものがキャッシュされます。それによりWordPress が既定のオプションテーブルにキャッシュすることが停止され、代わりにインストールされているオブジェクトキャッシュバックエンドが使用されます。

次に使用する永続的キャッシュの種類を選ぶ必要があります。またOpcode キャッシュソフトのいくつかはオブジェクトキャッシュにも使用することもできます。

以下もサイトのオブジェクトキャッシュソフトとして使用することができます。

WordPressでオブジェクトキャッシュを動作させるには、オブジェクトキャッシュドロップインファイルをWordPress サイトに追加するプラグインをインストールする必要があります。 オブジェクトキャッシュドロップインファイルを追加するオブジェクトキャッシュバックエンドプラグインは、例えば APC や Memcached などいくつかあります。 W3 Total Cacheもこれらの機能ほとんどをサポートしています。

マルチサーバー設定の場合は、Memcached の使用を検討する必要があるかもしれません。

共有サーバーの場合、頻繁にアクセスするデータを保存するのにディスクを使うことができるかもしれませんが、これにより問題が生じて実際にはサイトの速度が低下する可能性があります。

ページキャッシュ

ページキャッシュはウェブサイトのページ、ブログの投稿、サイトのフロントページで使うと大きな効果を発揮しますが、フォーラムは非常に動的でユーザーによって絶えず更新されます。そのためページキャッシュが上手く機能するかどうかはbbPress フォーラムの設定方法によって大きく変わります。

ユーザーがログインしている時のみ投稿を許可している場合、ゲストユーザーにのみキャッシュを提供するのがベストです。プラグインにキャッシュの更新を設定するオプションがあった場合、必ず1-2時間程度の短い時間を設定するようにしてください。またbbPress 投稿の種類が更新された後は、ほとんどbbPress互換のキャッシュプラグインではキャッシュが更新されて、全てが再び最新の状態となるでしょう。

ユーザーがサイトに登録しなくても投稿できる場合、ページキャッシュはあまり実用的な解決策ではないかもしれません。こうした理由から、フォーラムページがゲストユーザーに古い情報を表示しないように、bbPressフォーラムページをページキャッシュから除外することをお勧めします。あなたのフォーラム非常に活発であればこの方法も検討してよいでしょう。

To disallow forum pages from Page caching, go into your favorite caching plugin and add these strings to the rejected pages/strings to cache setting.

フォーラムのルートスラッグを変更せずそのまま使用している場合は、forums 文字列でほとんどのbbPressページを除外指定でき、topics 文字列で トピックのアーカイブを除外指定できます。

	
/forums/
/topics/

フォーラムの設定でルートスラッグを無効にしている場合は、除外指定で以下の文字列が使用できます。

/forums/
/forum/
/topics/
/topic/
/reply/

フォーラムの設定でカスタムスラッグを設定している場合は、上記の文字を変更した文字で置き換えてください。

ページキャッシュのパフォーマンスを向上させるために、RedisやMemcached などのオペコードキャッシュソフトがページをメモリに保存するのを許可することができます。しかしフォーラムはキャッシュするページが普通より多くなる傾向があるため、サイトの RAM の使用状況を注視する必要があることを忘れないでください。

データベースを最適化する

この設定は任意です。 

投稿をゴミ箱に捨てたり頻繁に編集したりスパム認定したりすると、データベースに大量の余分なデータが蓄積され始めます。個々の断片は数バイトかもしれませんが、しばらくするとこのデータはどんどん積み重なって、やがてはサーバーがデータベーステーブルから情報を取得する時間に影響を与えるかもしれません。データベースの最適化を行うと不要なデータ (データベースに居座っているスパム投稿など) がクリーンアップされて削除され、パフォーマンスが少し向上しデータベース サイズが縮小します。

SQL コマンドOPTIMIZE TABLEを使ったり、phpMyAdminの画面でテーブルを選択してドロップダウンメニューからテーブルを最適化を選んでデータベーステーブル最適化関数を実行したりすることで、データベーステーブルを最適化することができます。ですが便利なWordPress プラグインを使えば簡単にデータベースを最適化できます。WP-DBManager, やWP-Sweepやその他の似たようなプラグインをインストールすれば, データベースの大部分を最適化できます。

これらのプラグインのいずれかを使用してデータベースを最適化する時、後述するようなデータ削除オプションが表示されることがあります。私が考える重要なオプションと、オプションを実行すべきでない理由、オプションを実行すると便利な理由について説明していきます。また、少なくとも 1-2ヶ月1回はデータベースを最適化することをお勧めします。

データを削除すると元には戻せないので、いずれかのオプションを実行する前にはデータベースのバックアップを実行することを推奨します。

  • リビジョンの削除 – これはあなたが投稿を非常に頻繁に編集する場合に特に便利です。bbPress はトピックと返信の編集ログに WordPress の投稿リビジョンシステムを使用します。If you want to keep the edit logs on your posts, and other plugins might the revision system for Custom CSS plugin. 何か重要なデータが失われると判断した場合はこれを実行しないでください。
  • 捨てられた/削除された投稿の完全削除 –ゴミ箱に捨てられた全てのもの(トピック、返信、ブログ投稿を含む)が削除しても問題ないと間違いなく思われる場合はこれを実行してください。
  • スパムの削除 – 通常このオプションにはスパムコメントも含まれます。スパムコメントはデータベースを酷く肥大化させる可能性があります。それらはWordPressだと少なくとも1ヶ月に1回のペースで自動削除されますが、これらプラグインを使うと時間を短縮できます。

大量のスパムトピックとスパム返信が残っている可能性があるので、これを実行する場合は全てのスパム返信とトピックスパムを削除するようにしてください。

  1. WordPress 管理画面で 返信 > 返信一覧 もしくは トピック > トピック一覧 と進みます。
  2. Click the スパム のアクションリンクをクリックすると、選択した投稿タイプの全てのスパムが表示されます。
  3. スパムをすべて削除 ボタンを押して、すべての投稿タイプのスパムを削除します。
  • テーブルの最適化 – WP-Sweep やWP-DBManger では、この操作は phpMyAdmin がデータベーステーブルを最適化する方法と似ています。

コアコードの改善

人生のあらゆることと同様、改善の余地は常にあります。bbPress のバージョン 2.6 では、いくつかのパフォーマンスの改善が開始される予定です。そして誰でもbbPress tracでテストやパッチの作成に協力することができます。もしくは bbPress のコード改善に関する提案を提供していただける方は、大変感謝いたします。

パフォーマンスを向上させるその他の方法

  • 不必要なオブジェクト、機能、プラグインを削除する – 必要なものだけ使用しましょう。
  • データを外部ソースにオフロードする – 静的コンテンツを保持する CDN や追加サーバーを使用することで、帯域幅とサーバー負荷を大幅に減らしてウェブサイトの速度を向上させることができます。
  • サイトの CSSファイル と JSファイルを軽量化や結合する – JavaScript と CSS を軽量化するとファイルのサイズを減らすことができ、結合すると複数のファイルに対するリクエストが最小限に抑えられます。
  • ブラウザのキャッシュを有効にする
  • CSS はヘッダーに、 JS はフッターに記述する
  • 画像を最適化する – bbPressのプラグインを使ったあなたのフォーラムでユーザーが大量のGIFファイルやJPEGファイルをアップロードした場合、これらの画像によってトピックの読み込み時間が遅くなることに気づかされるでしょう。画像最適化を有効にするとこれら画像のサイズがが小さくなり、画像を含んだ投稿の読み込みが速くなります。
  • 遅延読み込みを使う – Using a lazy load plugin like Lazy Load や Rocket Lazy Load のような遅延読み込みプラグインを使うと、リクエストが最小限に抑えられてユーザーの画面に写る画像のみが表示されるようになります。
  • Gzip 圧縮を使用する

追加情報