web-dev-qa-db-ja.com

どうすればスピードアップできますか WP 管理セクション

私たちは彼らが座っているサーバーとインターネットの間にプロキシを持つWPサイトをたくさん持っています。

WPの中のいくつかのものは単純に動作しません:

  • ダッシュボード上のRSSフィード
  • テーマを見上げる
  • プラグインを調べる
  • コアアップデート

我々は手動ですべてをします、そしてページロードのSLOWNESSを除いて本当に問題はありません。メディアの追加を除いて、adminのほぼすべての処理に4〜5秒かかるようです - これは驚くほど高速です。

バックエンドを高速化するために確認したり実行したりできる最初の作業は何ですか? (フロントエンドが飛ぶ)

11
STing

フッター内のjQuery/JavaScript

できることの1つは、 jQueryをフッターに移動することです) ブログ記事 。デフォルトではヘッダーには必要ありません。私が通常テーマのためにそれをするように、あなたはすべてがまだうまく動くかどうかチェックするでしょう:

<?php
/* Plugin Name: Move jQuery to the footer */
function( 'admin_enqueue_scripts', function( $hook )
{
    $GLOBALS['wp_scripts']->add_data( 'jquery', 'group', 1 );
} );

問い合わせ

投稿リストのテーブル画面を高速化するもう1つのことは、照会されるフィールドの数を減らすことです。私は999投稿の設定のためにそれらのスクリーンがあまりにも遅くロードされていたときに私はしばらく前にその問題に気づいた。フル ここのブログ記事 - プラグイン as GitHub Gist

<?php
/**
 * Plugin Name: (WCM) Faster Admin Post Lists
 * AuthorURL:   http://unserkaiser.com
 * License:     MIT
 */

add_filter( 'posts_fields', 'wcm_limit_post_fields_cb', 0, 2 );
function wcm_limit_post_fields_cb( $fields, $query )
{
  if (
        ! is_admin()
        OR ! $query->is_main_query()
        OR ( defined( 'DOING_AJAX' ) AND DOING_AJAX )
        OR ( defined( 'DOING_CRON' ) AND DOING_CRON )
    )
        return $fields;

    $p = $GLOBALS['wpdb']->posts;
    return implode( ",", array(
        "{$p}.ID",
        "{$p}.post_date",
        "{$p}.post_name",
        "{$p}.post_title",
        "{$p}.ping_status",
        "{$p}.post_author",
        "{$p}.post_password",
        "{$p}.comment_status",
    ) );
}

すべての列が必要ではない場合は、いくつかの列の内容も削除して上記のプラグインを拡張することができます。

add_filter( 'manage_edit-post_columns', function( $columns )
{
    # @TODO Remove columns which you don't need
    return $defaults;
} );

ダッシュボード

すべてのユーザーがダッシュボードにアクセスします - これはおそらく管理UIの最も遅い部分です。非表示にする代わりに、不要なウィジェットを非アクティブにすることもできます。

<?php
/** Plugin Name: Remove Dashboard Widgets */
add_action( 'wp_dashboard_setup', function()
{
    remove_meta_box( 'dashboard_plugins', 'dashboard', 'normal' );
    remove_meta_box( 'dashboard_primary', 'dashboard', 'normal' );
    remove_meta_box( 'dashboard_primary', 'dashboard', 'side' );
    remove_meta_box( 'dashboard_activity', 'dashboard', 'normal' );
    remove_meta_box( 'dashboard_right_now', 'dashboard', 'normal' );
    remove_meta_box( 'dashboard_secondary', 'dashboard', 'normal' );
    remove_meta_box( 'dashboard_quick_press', 'dashboard', 'side' );
    remove_meta_box( 'dashboard_browser_nag', 'dashboard', 'normal' );
    remove_meta_box( 'dashboard_recent_drafts', 'dashboard', 'side' );
    remove_meta_box( 'dashboard_incoming_links', 'dashboard', 'normal' );
    remove_meta_box( 'dashboard_incoming_links', 'dashboard', 'normal' );
    remove_meta_box( 'dashboard_recent_comments', 'dashboard', 'normal' );
} );

発信データ

私はちょうど SergejMüllerによるSnitch を使ってあなたのインストールから何のデータが出ようとしているかを監視することをお勧めできます。プラグインを使用すると、不要なcronジョブなどのタスクを対象とした特定の内部接続だけでなく、すべてまたは特定の接続のみを抑制できます。完全なパッケージが欲しくない場合は、そのソースを例として見ることができます。 Sergejは通常、余裕のある余白を使って very のコードを書きます。

11
kaiser

私はこれをインストールすることをお勧めします https://github.com/johnbillion/query-monitor そして以下を見てください:メモリ使用量、HTTPリクエスト、AJAXそして遅いクエリ。

それはあなたのリビジョン、プラグインのAJAX、悪い問い合わせなどかもしれません。

あなたがサーバにもっとRAMを追加する必要があるかどうかを見ることができるでしょう、それは特にあなたが管理者に複数のエディタを持っているなら特に遅い読み込み管理問題の多くを解決します。

しかし、ここにいくつかのトリックがあるだけでなく、1つのソリューションにすべてがあるわけではありません。テーマがプラグインと管理者の間でどのように相互作用しているかを確認する必要があります。

4
Wyck

上記のよく提案された答えのいくつかと一緒にあなたはたくさんのスクリーンが開いているか、一度に多くのユーザーが使用している場合あなたの管理を劇的に遅くすることができます。 WP-Engineのようないくつかのホストは実際にこのセットアップのバリエーションを自動的に持っています。

function optimize_heartbeat_settings( $settings ) {
    $settings['autostart'] = false;
    $settings['interval'] = 60;
    return $settings;
}
add_filter( 'heartbeat_settings', 'optimize_heartbeat_settings' );

function disable_heartbeat_unless_post_edit_screen() {
    global $pagenow;
    if ( $pagenow != 'post.php' && $pagenow != 'post-new.php' )
        wp_deregister_script('heartbeat');
}
add_action( 'init', 'disable_heartbeat_unless_post_edit_screen', 1 );

あなたが試すかもしれないもう一つのことは、いくつかのwp-config.php定数をいじることです。ポストリビジョンをオフにしても問題ないでしょうが、やりたくなければ少なくともリビジョンを制限することができます。

define('WP_POST_REVISIONS', 5);

物事を最適化するために私が変更する他の2つの定数は、空のごみ箱と自動保存のものです。

define('AUTOSAVE_INTERVAL', 600);
define( 'EMPTY_TRASH_DAYS', 3 );
2
Bryan Willis