Bagaimana saya bisa mempercepat bagian admin WP saya?

12

Kami memiliki banyak situs WP dengan proxy di antara server tempat mereka duduk dan internet.

Beberapa hal di WP tidak berfungsi:

  • Umpan RSS di dasbor
  • mencari tema
  • mencari plugin
  • pembaruan inti

Kami melakukan semuanya secara manual dan benar-benar tidak ada masalah kecuali untuk SLOWNESS pada pemuatan halaman. Tampaknya hampir semua yang ada di admin membutuhkan 4-5 detik untuk diproses kecuali untuk menambahkan media - yang ternyata sangat cepat.

Apa saja hal-hal awal yang dapat saya periksa atau lakukan untuk mempercepat back-end? (ujung depan terbang)

Menyengat
sumber
3
Anda dapat memblokir permintaan eksternal dengan mendefinisikan define( 'WP_HTTP_BLOCK_EXTERNAL', true );di wp-config.php. Juga admin WordPress enqueues Open Sansdan font lain dari Google. Anda dapat menonaktifkannya juga. Itu membuat memuat bagian admin sedikit lebih cepat.
Robert rona
@Roberthue - sepertinya hampir semua halaman di admin melakukan panggilan ke web. Kami ingin mematikan semuanya. Menambahkan pemblokiran permintaan eksternal sekarang untuk melihat bagaimana ia bereaksi.
STing
1
@Roberthue - Tidak yakin mengapa saya belum pernah menggunakan ini sebelumnya - apakah Anda tahu kapan WP_HTTP_BLOCK_EXTERNAL pertama kali diterapkan. Saya menambahkannya ke plugin saya (memiliki plugin yang saya sebarkan di mana-mana) dan ada cara yang lebih cepat untuk memuat semua halaman. Harap tambahkan ini sebagai jawaban dan kiat lain untuk para pengguna jaringan.
STing
Sudah ada di sana selama beberapa tahun. Tidak yakin kapan tepatnya itu ditambahkan. Saya juga mencari cara untuk mempercepat halaman admin ketika saya menemukan artikel ini
Robert hue
1
Tolong sebagai jawaban. Juga sudah dalam waktu yang sangat lama, mungkin (hampir) selama HTTP API itu sendiri.
Jarang,

Jawaban:

12

jQuery / JavaScript di catatan kaki

Satu hal yang dapat Anda lakukan adalah memindahkan jQuery ke posting blog footer . Ini per default tidak diperlukan di header. Anda akan harus memeriksa apakah semuanya masih bekerja keras, karena saya biasanya hanya melakukannya untuk tema:

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

Pertanyaan

Hal lain yang mempercepat layar tabel daftar posting adalah mengurangi jumlah bidang yang ditanyakan. Saya perhatikan masalah itu beberapa waktu yang lalu ketika layar itu dimuat terlalu lambat karena pengaturan 999 posting saya. Posting blog lengkap di sini - Plugin sebagai 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",
    ) );
}

Jika Anda tidak membutuhkan semua kolom, Anda dapat memperluas plugin di atas dengan menghapus konten beberapa kolom juga.

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

Dasbor

Setiap pengguna masuk di dasbor - yang mungkin merupakan bagian paling lambat di UI admin. Anda dapat menonaktifkan beberapa widget yang tidak Anda butuhkan, bukan hanya menyembunyikannya:

<?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' );
} );

Data keluar

Saya hanya bisa merekomendasikan menggunakan Snitch oleh Sergej Müller untuk memantau data apa yang mencoba meninggalkan instalasi Anda. Plugin ini memungkinkan untuk menekan semua atau hanya koneksi tertentu serta pin koneksi internal spesifik yang menargetkan tugas-tugas seperti pekerjaan cron yang tidak diinginkan dan hal-hal serupa. Anda dapat melihat sumbernya untuk contoh jika Anda tidak ingin paket lengkap. Sergej biasanya menulis kode yang sangat mudah dibaca dengan penggunaan ruang kosong yang luas.

kaisar
sumber
1
Anda juga dapat melihat Informationen yang berguna melalui Plugin Debug Objects untuk melihat, yang kueri, fungsi apa yang dipecat dan berapa lama dia. Juga dari fungsi mana, plugin datang kueri.
bueltge
4

Saya sarankan menginstal https://github.com/johnbillion/query-monitor ini dan melihat yang berikut ini: Penggunaan memori, permintaan HTTP, AJAX, dan pertanyaan lambat.

Itu bisa berupa revisi Anda, AJAX plugin, kueri buruk, dll.

Anda akan dapat melihat apakah Anda perlu menambahkan lebih banyak RAM ke server Anda yang biasanya memecahkan banyak masalah pemuatan admin yang lambat, terutama jika Anda memiliki beberapa editor di admin.

Tapi selain beberapa trik di sana-sini tidak ada solusi all in one, Anda perlu memeriksa bagaimana tema berinteraksi plugin dengan admin.

Wyck
sumber
2

Bersamaan dengan beberapa jawaban yang disarankan di atas, Anda dapat membatasi atau menonaktifkan "detak jantung" wordpress yang secara dramatis dapat memperlambat admin Anda jika Anda memiliki banyak layar terbuka atau banyak pengguna yang menggunakan sekaligus. Beberapa host seperti WP-Engine sebenarnya memiliki variasi pengaturan ini secara otomatis.

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 );

Satu hal lain yang mungkin Anda coba adalah bermain-main dengan beberapa wp-config.phpkonstanta. Menonaktifkan revisi pos akan tanpa bantuan pertanyaan, tetapi jika Anda tidak ingin melakukan itu, Anda setidaknya bisa membatasi revisi.

define('WP_POST_REVISIONS', 5);

Dua konstanta lain yang biasanya saya ubah untuk menjaga hal-hal dioptimalkan adalah sampah kosong dan autosave.

define('AUTOSAVE_INTERVAL', 600);
define( 'EMPTY_TRASH_DAYS', 3 );
Bryan Willis
sumber
Tidak masalah. Menambahkan beberapa opsi juga.
Bryan Willis