WP管理セクションを高速化するにはどうすればよいですか?


12

多くのWPサイトがあり、それらが置かれているサーバーとインターネットの間にプロキシがあります。

WPのいくつかの機能は、単に機能しません。

  • ダッシュボードのRSSフィード
  • テーマを探しています
  • プラグインを検索する
  • コアアップデート

私たちはすべてを手動で行いますが、ページのロード時のスローネスを除いて、実際には問題はありません。adminのほとんどすべては、メディアの追加を除いて、処理に4〜5秒かかります-驚くほど高速です。

バックエンドを高速化するためにチェックまたは実行できる最初の事柄は何ですか?(フロントエンドが飛ぶ)


3
あなたは定義することで、外部の要求をブロックすることができますdefine( 'WP_HTTP_BLOCK_EXTERNAL', true );wp-config.php。また、WordPress管理者Open SansがGoogleのエンキューおよびその他のフォントを使用します。あなたもそれを無効にすることができます。ロード管理セクションが少し速くなります。
ロバート・ヒュー14年

@Roberthue-adminの多くのページがWebを呼び出しているようです。すべてをオフにします。ここで外部リクエストのブロックを追加して、その反応を確認します。
スティング

1
@Roberthue-これを使用したことがない理由がわからない-WP_HTTP_BLOCK_EXTERNALが最初に実装されたのを知っていますか。それをプラグインに追加し(どこにでもプラグインを展開します)、すべてのページをすばやく読み込む方法があります。これをグリッドレスの回答およびその他のヒントとして追加してください。
スティング

数年前からありました。いつ追加されたか正確にはわかりません。私が見つけたとき、私はまた、高速化、管理ページへの方法を模索していました。この記事
ロバート色相を

1
答えとしてください。また、非常に長い間、おそらく(ほぼ)HTTP API自体が使用されていました。
ラスト14年

回答:


12

フッターの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件の投稿設定が原因で、これらの画面の読み込みが遅くなりすぎていたときに、この問題に少し気づきました。完全なブログ投稿はこちら-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は通常、非常に読みやすいコードを大量の空白を使用して記述します。


1
また、プラグインデバッグオブジェクトを介して有用な情報を取得し、どのクエリ、関数が起動されたか、どのくらい実行されたかを確認できます。また、どの関数からプラグインがクエリを取得します。
-bueltge

4

このhttps://github.com/johnbillion/query-monitorをインストールし、次を確認することをお勧めします。メモリ使用量、HTTPリクエスト、AJAX、遅いクエリ。

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

サーバーにRAMを追加する必要があるかどうかを確認できます。これにより、特に管理者に複数のエディターがある場合は、通常、読み込みの遅い管理者の多くの問題が解決します。

ただし、ここでのいくつかのトリックに加えて、すべてが1つのソリューションではないため、テーマがプラグインと管理者と対話する方法を確認する必要があります。


2

上記のよく提案された回答のいくつかに加えて、ワードプレスの「ハートビート」を制限または無効にすることができます。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 );

問題ない。さらにいくつかのオプションを追加しました。
ブライアンウィリス
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.