こんにちは
どのような要件でどのようなプログラムを書くのかによって異なりますので回答が難しいですが、Popular Posts より負荷が軽い処理を書けば Popular Posts より負荷は軽いでしょう。
yyyaaa12さん、こんにちは。
負荷については munyagu さんのおっしゃる通りかと思います。ページビューが秒間数百とかの人気サイトですと、そもそもどちらの方法もお勧めしません。データベースへの書き込みが多すぎてサイトが死にます。
そこまでのサイトでしたら Google Analytics 等からページビューを取得して利用するのがよろしいかと。ただしリアルタイムでの取得はできないので、前日までの人気順とかになりますかね…
ご参考になれば。
@munyagu さん
@shokun0803 さん
ご回答ありがとうございます。
とても参考になりました。
いただいたご意見と状況を踏まえてwp rest apiを使った人気上位10件の投稿の取得を考えています。
【状況】
・Popular Postsを使用すると、サーバー通信が頻繁に発生してサーバーへの負荷が高い
・現状、GAがGA4のアップデートを頻繁に行っており仕様が変わる可能性がある
・UAは今年廃止
【上記踏まえた対応】
・投稿記事に閲覧数をカウントするカスタムフィールドを追加
・wp rest apiの独自エンドポイントを作成
・閲覧数が多い人気記事を10件出力
・独自エンドポイントが出力したjsonをWP REST Cacheなどでキャッシュ
・ブログの投稿、更新、削除が行われたらキャッシュされたファイルを破棄
・キャッシュの保持期間は1年などブログの投稿、更新、削除がされなければキャッシュされたファイルはほぼ破棄されない
・category.php、single.phpは、キャッシュされたjsonを参照して人気記事一覧を出力
上記対応ですとサーバーの負荷は抑えられそうでしょうか?
そもそも、ページビューが凄い多いサイトでは無い為、
問題ないとは思うのですがせっかく実装するなら最善のものをと考えておりまして。
素人質問で申し訳ありませんが、もしご回答いただけるようでしたら幸甚です。
ここで回答できるのは一般論だけです。
REST を使うと負荷が抑えられるかは分かりません。単純に考えればサーバーへのリクエストが1つ増えます。
キャッシュを使えば一般的には早くなる可能性があります。
負荷を抑えるというのは、Popular Posts と比較してということだと思いますが、Popular Posts についてよく知らないので明確には答えられません。
しかし、集計の要件が特定の条件に特化しているのであれば Popular Posts より負荷がさげられるのではないかと思います。
特に、記事の閲覧数を単純にカウントアップするだけであれば要件が単純そうなので負荷は低そうです。
環境に依存する部分もありますので、明確にこうすれば負荷が低いとは言いにくいです。
満足いく結果を得るには作ってみて計測し、試行錯誤しかないんじゃないでしょうか。