いくつかのWordPressコードで 次のPHP Code Sniffs を実行していますが、次のような警告が表示されます。
352 | WARNING | get_posts is discouraged in favor of creating a new
| | WP_Query() so that Advanced Post Cache will cache
| | the query, unless you explicitly supply
| | suppress_filters => false.
私は経験豊富なプログラマーですが、私はWordPressの歴史にあまり精通していません。この警告は重要に思えますが、厄介です。私はいくつかの点について混乱しています、そして 他の答え 私は 件名 の 見つかった 私の点に対処していないようです。
「Advanced Post Cache」とは何ですか。私はWordPressが(たくさんのPHPアプリケーションのように)キャッシングをいくつかの異なるレベルで行っていることを知っています。
この警告はget_posts
がキャッシュを決して使用しないことを私に言っていますが、WP_Query
は使用しますか?
suppress_filters
とWP_Query
を使用するとAdvanced Post Cacheが回避されることをこの警告で教えてくれますか?それともsuppress_filters
をget_posts
と一緒に使用するとキャッシュが呼び出されるのでしょうか。または、他の何か?
suppress_filters
は他に何をしますか?
この問題にもっと詳しい人がWordPressの初心者に手掛かりを得られるならば、私はそれをいただければ幸いです。 「常にXを使用する、またはYを使用しない」というような答えを探しているのではありません。それぞれの方法のトレードオフを理解しようとしています。
これはWordPress.com VIPに直接関連し、その影響によるものです。
VIPでは、1週間に何億ものページビューの範囲にあるサイトを扱っています。結果として、あなたのサイトを遅くすることができる状況は小規模の共有ホストよりもその規模ではるかに顕著ですが、これはまだまともなVPSの100かそこらのユーザーの領域で適度なトラフィックを持つサイトに影響を与えます。 agencysコードが本番稼働する前にすべてをコードレビューする
特にget_posts
は結果をキャッシュしません。同じget_posts
呼び出しを5回行うと、後で結果を保存するのではなく、データベースに5回行きます。 WP_Query
はこれをしておらず、それをはるかにうまくキャッシュしているだけでなく、ポスト全体が完全に整形されているためにget_posts
では不可能な他の最適化もしています。
get_posts
に結果をキャッシュさせる方法はありますが、デフォルトではsuppress_filters
オプションはtrueですが、falseに設定した場合、WordPress内のキャッシュメカニズムが働き、結果は後で保存されます。
これらが格納されている場所に関しては、WP_Cache
と呼ばれるオブジェクトキャッシングシステムがあります。デフォルトでは、これはあなたが入れたものをすべて保存し、それを保持します(ページロードで何度も行われる作業を防ぐためにあなた自身のキャッシュを実装しないでください、WPはカバーしています!) 。
ただし、advanced-cache.php
またはobject-cache.php
を提供するプラグインがあり、WP_Cache
は永続的にすることができます。たとえば、batcache
を使用すると、WP_Cache
はmemcached
を使用してデータを格納し、ページロード間でデータを保持し、パフォーマンスを大幅に向上させることができます。 Redis/memcache/etcにも同様のプラグインがあります。
https://vip.wordpress.com/documentation/ をご覧になることをお勧めします。その一部はWordPress.com VIPプラットフォームに固有のものですが、その他の部分はパフォーマンスとセキュリティにとって重要です。 。キャッシュされていない関数の使用など、他のものを検出するVIP Scannerツールもあります。