web-dev-qa-db-ja.com

$ post-> post_titleの代わりにget_the_title()のようなネイティブAPI呼び出しを使用した場合、パフォーマンスが落ちるでしょうか?

私はすでにIDの配列をループ処理し、それらのそれぞれにget_post()を使用して結果のオブジェクトを配列に格納するという以前のプロセスで$ postオブジェクトを取得したとしましょう。

後で、その配列をループ処理して、投稿ごとに何かをしたいと思います。私はすでに$ my_postオブジェクトを持っているので、echo $my_post->post_title、または派手でecho apply_filters('the_title', $my_post->post_title, $my_post->ID)、またはネイティブのget_the_title($my_post->ID)を使うことができます。

ここに私のパフォーマンスの問題が出てくるところです。ネイティブキャッシュはどれほど信頼できますか(私はいくつかの狂ったプラグインについて話しているのではなく、内蔵のwp_cache_get($post_id, 'posts')などだけです)。

私が求めているのは、キャッシュを使用するのではなく、get_the_title()がDBに戻って投稿を取り戻す可能性がどのくらいあるかということです。すでに持っているオブジェクトデータあなたが内蔵のものを使うと明らかにあなたはより多くの砂糖を得る。しかし、それはDBに戻る危険性がありますか?

5
Tom Auger

テンプレートタグはグローバルな$postに依存します(それをサポートするものに何か他のものを明示的に提供しない限り)。

  • 彼らはその変数から何かを取得します(データベースでそれを利用する理由はありません)

  • または彼らはしません(それから彼らはあなたが望むものを手がかりがないので彼らは失敗します)

通常の状況では、テンプレートタグの影響を心配する必要はありません。あなたが狂った量の投稿を扱い始めたり、過度に複雑なフィルタを適用したりした場合にのみ、それが有効になります。

コメントでの議論の後に更新

get_post()は常にデータベース呼び出しをする前にキャッシュを呼び出そうとします。キャッシュは、投稿を明示的に変更する関数( clean_post_cache() を参照)によって消去されるか、自然に期限切れになります。

4
Rarst