バックエンドのみでHeartbeatを無効化:フロントエンドへの影響はなく、編集エクスペリエンスにも影響なし

ある ワードプレス パフォーマンス最適化の実際ハートビートAPI 避けられないが、しばしば "誤解 "されるモジュールである。
多くのサイトでは、バックエンドのパフォーマンスを最適化する際に、単にサイト全体でハートビートを無効にします:

  • エディタの自動保存を無効にする
  • ロックされたアノマリーでのマルチプレイヤー・コラボレーション
  • WooCommerceの注文ステータスが同期されない
  • バックエンドのエクスペリエンスが悪化

ハートビートを "オフにする "のではなく、"バックグラウンドで編集以外の場面でのみ無効にする "のが正しいやり方だ。

この記事では、その全貌を明らかにする:

  • ハートビートは一体何をしているんだ?
  • バックグラウンド・オンリー」が最善の解決策である理由
  • 複数の安全かつ制御された実現
  • 異なるバックエンドページの差別化戦略
  • よくある落とし穴と検証方法
画像[1] - Heartbeatをバックエンドでのみ無効にする:フロントエンドと編集エクスペリエンスには影響なし

I. ハートビートとは?なぜバックグラウンドが遅くなるのか

1.ハートビートの本質

Heartbeat APIは 時限AJAXポーリング・メカニズムデフォルト:

  • 15~60秒 一度トリガー
  • とおす admin-ajax.php またはREST API
  • サーバーとの継続的なステータスデータの交換

主な用途は以下の通り:

  • 記事の自動保存
  • 編集ロック(複数回の上書きを防ぐ)
  • バックグラウンド通知、ステータス更新
  • WooCommerce 注文/在庫のリアルタイム更新
画像[2] - Heartbeatをバックエンドでのみ無効にする:フロントエンドと編集エクスペリエンスには影響なし

2.問題の所在

実際の本番環境では、ハートビートの問題は "機能性 "よりも、次の点にある。周波数+レンジ::

  • バックエンドで開いているすべてのページがポーリングされている
  • 複数の管理者が同時にオンラインである場合のオーバーレイ要求
  • ロープロファイル・サーバー / 海外サーバー RTT High
  • admin-ajax.php 本質的なパフォーマンスの低さ

やがてそれは顕在化する:

  • バックグラウンドでのCPU使用率が高い
  • MySQLクエリ数例外
  • PHP-FPM プロセススタッキング
  • 時折、バックグラウンドでラグが発生し、スピンする。

なぜ "グローバルにハートビートを無効にする "ことができないのか?

多くのチュートリアルがそれを勧めている:

add_action( 'init', function() { )
    wp_deregister_script( 'heartbeat' );
});

これは間違ったデモンストレーションだ。

理由は単純です:

官能性ハートビートに依存するかどうか
グーテンベルク・オートセーブ
編集ロック
WooCommerceバックエンド注文の更新
クラシック・エディター ドラフトプロテクション

一長一短というのは、たいていの場合、その結果である:

  • 編集内容の喪失
  • 複数の編集コンフリクト
  • 舞台裏の機能は "普通に見えるが、実は隠された地雷"

だから、目標はこうでなければならない:

バックエンドの非編集ページ]でのみハートビートを無効にします。
エディター、主要機能の保持に必要なハートビート

III.ベスト・ストラテジーの概要(結論が先)

実績があり、管理された戦略であれば満足できるはずだ:

  1. フロントエンドには影響しない(フロントエンド)
  2. 記事/ページの編集には影響しない
  3. wp-adminでのみ動作
  4. 拡張性と保守性

推奨される優先順位

  1. に基づいている。 admin_enqueue_scripts 精密無効化(望ましい)
  2. ページ判定条件による差別化処理
  3. ハートビートの頻度を制御する(完全には無効ではない)
  4. プラグイン・プログラム(補完のみ)
画像[3] - Heartbeatをバックエンドでのみ無効にする:フロントエンドと編集エクスペリエンスには影響なし

オプション1 (推奨): バックグラウンドで非編集ページのみハートビートを無効にする。

核となる考え方

  • ハートビートは台本だ:ハートビート
  • フックによるバックグラウンド・ロード条件付き除名
  • 編集ページ(post.php / post-new.php)が動かない
  • 他のバックエンドページを直接無効にする

完全な使用可能コード

/**
 * Disable Heartbeat only on admin non-editor pages
 */
add_action( 'admin_enqueue_scripts', function() {

    // 当前后台页面
    $screen = get_current_screen();

    if ( ! $screen ) {
        return;
    }

    // 编辑文章 / 页面时,保留 Heartbeat
    if ( $screen->base === 'post' ) {
        return;
    }

    // 其余后台页面禁用 Heartbeat
    wp_deregister_script( 'heartbeat' );
});

このプログラムが安全な理由

  • admin_enqueue_scripts バックグラウンドでのみ有効
  • ポスト ページが明示的に除外される(編集経験には影響しない)
  • フロントエンドのスクリプトには触れないでください
  • REST APIには影響しない

V. プログラムII:バックオフィスの細かいページコントロール(上級者向け)

もしあなたが大規模サイト / Eコマースバックオフィス / マルチロールシステムもっと細かくてもいい。

例:これらのページのみハートビートを維持する

  • 記事 / ページ編集者
  • WooCommerce注文ページ
  • カスタムバックエンドダッシュボード
add_action( 'admin_enqueue_scripts', function() {)

    $screen = get_current_screen(); if ( !
    if ( ! $screen ) return;

    $allowed = [
        'post'、
        'woocommerce_page_wc-orders'.
    ];

    if ( in_array( $screen->base, $allowed, true ) ) { 。
        を返します;
    }

    wp_deregister_script( 'heartbeat' ); }.
}).

フィットしています:

  • WooCommerceスタンドアロン
  • 複数のバックオフィス業務
  • 高頻度注文/コンテンツ更新システム

VI.オプション3:禁止せず、「ダウンスケーリング」のみ(より保守的)

完全に無効化した場合の未知の影響が心配な場合は、以下の方法がある。心拍数を減らす.

例:バックエンドの編集不可ページ→1回120秒

add_filter( 'heartbeat_settings', function( $settings ) {.

    if ( is_admin() ) {
        $settings['interval'] = 120;
    }

    return $settings.
});

比較ノート

目端が利くサーバー負荷機能的完全性
完全に無効⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐
バックグラウンドでのみ無効⭐⭐⭐⭐⭐⭐⭐⭐
周波数低減⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐

VII.プラグイン・プログラム(長期プログラムとしては推奨されない)

一般的なプラグイン:

問題は:

  • 粒子径が十分でない
  • エスカレーション後の制御不能な行動
  • 特定のバックエンドページを区別するのが難しい

フィットしています:

  • コードを書くのが不便
  • アドホックテスト
  • 小サイト

合わないんだ:

  • ハイコンカレント
  • 電子商取引
  • マルチエディターシステム
画像[4] - Heartbeatをバックエンドでのみ無効にする:フロントエンドと編集エクスペリエンスには影響なし

よくある落とし穴とチェックリスト

1.編集オートセーブの失敗

ラショナル無効 ポスト ウェブページ
けっちゃくをつける謝辞 $screen->base === 'post' 除外

2.WooCommerceの注文が更新されない

ラショナル注文ページはHeartbeatに依存しています。
けっちゃくをつけるホワイトリスト

3.フロントの不正使用

ラショナルを使用する。 開始 / wp_enqueue_scripts
けっちゃくをつける使用のみ admin_enqueue_scripts

4.判定条件の不成立

ラショナル::get_current_screen() そうそうき
けっちゃくをつけるで使用しないでください。 開始 ホック

IX.本当に有効かどうかを確認する方法

方法1:ブラウザのネットワークパネル

  1. バックエンドの非編集ページを開く
  2. ろ過 ハートビート / admin-ajax.php
  3. 周期的なリクエストはもうない✅。

方法2:サーバーログ

  • admin-ajax.php リクエスト数が大幅に減少
  • PHP-FPM ロードドロップ

X. 要約する(直接的な結論を出す)

正しいハートビート最適化の原則は、たった一文である:

必要な機能をオフにせず、不要なシーンだけをオフにする。

ベストプラクティス

  • フロントデスクが動かない
  • ✅ 編集ページが動かない
  • ✅ 編集不可能なページの背景を無効にする
  • プラグイン依存を避けるためのコードレベルの制御 ✅ プラグイン依存を避けるためのコードレベルの制御

あなたが望むなら、次のステップをお手伝いしますよ:

  • プレス WooCommerce / コンテンツ・ステーション / SaaSバックエンド カスタマイズ・バージョン
  • これをまとめるのに役立つ SEOテクニカル・ブログ構造(H1-H4+メタ)
  • あるいは、あなたに mu-pluginの再利用可能バージョン


お問い合わせ
チュートリアルが読めない?無料でお答えします!個人サイト、中小企業サイトのための無料ヘルプ!
カスタマーサービス WeChat
カスタマーサービス WeChat
電話:020-2206-9892
QQ咨询:1025174874
Eメール:info@361sale.com
勤務時間: 月~金、9:30~18:30、祝日休み
© 複製に関する声明
この記事を書いた人:I heard your name is Bo
終わり
好きなら応援してください。
クドス588 分かち合う
解説 ソファ購入

コメントを投稿するにはログインしてください

    コメントなし