Wie kann ich meinen WP Admin-Bereich beschleunigen?

12

Wir haben viele WP-Sites mit einem Proxy zwischen den Servern, auf denen sie sitzen, und dem Internet.

Einige Dinge in WP funktionieren einfach nicht:

  • RSS-Feeds auf dem Dashboard
  • Themen nachschlagen
  • Plugins nachschlagen
  • Kernupdates

Wir machen alles manuell und es gibt wirklich keine Probleme mit Ausnahme von SLOWNESS beim Laden von Seiten. Es scheint, dass fast alles in Admin 4-5 Sekunden dauert, außer das Hinzufügen von Medien - was überraschend schnell ist.

Was kann ich als Erstes überprüfen oder tun, um das Back-End zu beschleunigen? (Das Front-End fliegt)

Stachel
quelle
3
Sie können durch die Definition von externen Anfragen blockieren define( 'WP_HTTP_BLOCK_EXTERNAL', true );in wp-config.php. Auch WordPress-Admin-Warteschlangen Open Sansund andere Schriftarten von Google. Sie können das auch deaktivieren. Dadurch wird der Ladevorgang etwas schneller.
Robert Hue
@Roberthue - Es sieht fast so aus, als würden viele Seiten im Admin-Bereich das Web anrufen. Wir möchten sie alle ausschalten. Fügen Sie jetzt die externe Anforderungsblockierung hinzu, um zu sehen, wie sie reagiert.
STing
1
@Roberthue - Ich bin mir nicht sicher, warum ich das noch nie verwendet habe - weißt du, wann WP_HTTP_BLOCK_EXTERNAL zum ersten Mal implementiert wurde? Ich habe es zu meinem Plugin hinzugefügt (habe ein Plugin, das ich überall propagiere) und es gibt eine Möglichkeit, alle Seiten schneller zu laden. Bitte fügen Sie dies als Antwort und andere Tipps für die Gridless.
STing
Es ist seit ein paar Jahren da. Ich weiß nicht genau, wann es hinzugefügt wurde. Ich suchte auch nach Möglichkeiten, die Verwaltungsseiten zu beschleunigen, als ich diesen Artikel fand
Robert Hue
1
Als Antwort bitte. Auch ist es sehr lange her, wahrscheinlich (fast) so lange wie die HTTP-API selbst.
Rarst

Antworten:

12

jQuery / JavaScript in der Fußzeile

Eine Sache, die Sie tun können, ist, jQuery in den Fußzeilen- Blogeintrag zu verschieben . Es wird standardmäßig nicht im Header benötigt. Sie müssen überprüfen, ob alles noch funktioniert, wie ich das normalerweise nur für Themen mache:

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

Abfragen

Eine andere Sache, die die Post List Table-Bildschirme beschleunigt, besteht darin, die Anzahl der abgefragten Felder zu verringern. Ich habe dieses Problem vor einiger Zeit bemerkt, als diese Bildschirme aufgrund meiner Einstellungen für 999 Posts zu langsam geladen wurden. Vollständiger Blogbeitrag hier - Plugin als 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",
    ) );
}

Wenn Sie nicht alle Spalten benötigen, können Sie das Plug-in erweitern, indem Sie auch den Inhalt einiger Spalten entfernen.

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

Instrumententafel

Jeder Benutzer gibt am Dashboard ein - was wahrscheinlich der langsamste Teil in der Admin-Benutzeroberfläche ist. Sie können einige nicht benötigte Widgets deaktivieren, anstatt sie nur auszublenden:

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

Ausgehende Daten

Ich kann nur empfehlen, mit Snitch von Sergej Müller zu überwachen, welche Daten Ihre Installation verlassen. Das Plugin ermöglicht es, alle oder nur bestimmte Verbindungen zu unterdrücken sowie bestimmte interne Verbindungen zu lokalisieren, die auf Aufgaben wie unerwünschte Cron-Jobs und ähnliches abzielen. Sie können die Quelle nach Beispielen durchsuchen, wenn Sie nicht das vollständige Paket möchten. Sergej schreibt normalerweise gut lesbaren Code mit einer großzügigen Leerraumnutzung.

Kaiser
quelle
1
Sie können auch nützliche Informationen über das Plugin Debug Objects erhalten, um zu sehen, welche Abfragen, Funktionen ausgelöst wurden und wie lange sie ausgeführt wurden. Auch von welcher Funktion, Plugin kommt die Abfrage.
Bueltge
4

Ich empfehle dies zu installieren https://github.com/johnbillion/query-monitor zu und Folgendes zu beachten: Speichernutzung, HTTP-Anforderungen, AJAX und langsame Abfragen.

Es können Ihre Revisionen, das AJAX eines Plugins, eine schlechte Abfrage usw. sein.

Sie können feststellen, ob Sie Ihrem Server mehr RAM hinzufügen müssen, was normalerweise viele Probleme beim langsamen Laden von Administratoren behebt, insbesondere wenn Sie mehrere Editoren im Administrator haben.

Aber abgesehen von einigen Tricks, die hier und da nicht alles in einer Lösung enthalten sind, müssen Sie herausfinden, wie die Plug-ins für Themen mit dem Administrator interagieren.

Wyck
quelle
2

Zusammen mit einigen der oben vorgeschlagenen Antworten können Sie den WordPress "Heartbeat" begrenzen oder deaktivieren, was Ihren Administrator erheblich verlangsamen kann, wenn Sie viele Bildschirme geöffnet haben oder viele Benutzer gleichzeitig verwenden. Einige Hosts wie WP-Engine haben automatisch eine Variation dieses Setups.

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

Eine andere Sache, die Sie versuchen könnten, ist das Basteln mit einigen der wp-config.phpKonstanten. Das Deaktivieren von Post-Revisionen würde ohne Frage helfen. Wenn Sie dies jedoch nicht möchten, können Sie die Revisionen zumindest einschränken.

define('WP_POST_REVISIONS', 5);

Zwei andere Konstanten, die ich normalerweise ändere, um die Dinge zu optimieren, sind der leere Papierkorb und der automatische Speicher.

define('AUTOSAVE_INTERVAL', 600);
define( 'EMPTY_TRASH_DAYS', 3 );
Bryan Willis
quelle
Kein Problem. Ein paar weitere Optionen hinzugefügt.
Bryan Willis