Come posso velocizzare la mia sezione di amministrazione di WP?


12

Abbiamo molti siti WP con un proxy tra i server su cui siedono e Internet.

Alcune cose in WP semplicemente non funzionano:

  • Feed RSS sulla dashboard
  • cercare temi
  • cercare plugin
  • aggiornamenti di base

Facciamo tutto manualmente e non ci sono davvero problemi ad eccezione di SLOWNESS al caricamento della pagina. Sembra che quasi tutto nell'amministratore impieghi 4-5 secondi per l'elaborazione tranne l'aggiunta di media, il che è sorprendentemente veloce.

Quali sono alcune cose iniziali che posso controllare o fare per accelerare il back-end? (le mosche front-end)


3
È possibile bloccare le richieste esterne definendo define( 'WP_HTTP_BLOCK_EXTERNAL', true );in wp-config.php. Anche gli amministratori di WordPress accodano Open Sanse altri caratteri di Google. Puoi disabilitare anche quello. Rende il caricamento della sezione admin un po 'più veloce.
Robert hue,

@Roberthue: sembra quasi che molte pagine dell'amministratore stiano chiamando al web. Vorremmo spegnerli tutti. Aggiungendo ora il blocco delle richieste esterne per vedere come reagisce.
STing

1
@Roberthue - Non so perché non l'ho mai usato prima - sai quando WP_HTTP_BLOCK_EXTERNAL è stato implementato per la prima volta. L'ho aggiunto al mio plugin (ho un plugin che propongo ovunque) e c'è un modo molto più veloce per caricare tutte le pagine. Si prega di aggiungere questo come una risposta e tutti gli altri suggerimenti per il gridless.
Sting

È lì da un paio d'anni. Non sono sicuro esattamente quando è stato aggiunto. Stavo anche cercando modi per velocizzare le pagine di amministrazione quando ho trovato questo articolo
Robert hue,

1
Come risposta per favore. Inoltre è in uso da molto tempo, probabilmente (quasi) fino a quando l'API HTTP stessa.
Rarst

Risposte:


12

jQuery / JavaScript nel piè di pagina

Una cosa che puoi fare è spostare jQuery nel post del blog a piè di pagina . Per impostazione predefinita non è necessario nell'intestazione. Dovrai verificare se tutto funziona ancora bene, come faccio normalmente per i temi:

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

Interrogazioni

Un'altra cosa che accelera le schermate della tabella degli elenchi di post è ridurre il numero di campi interrogati. Ho notato quel problema qualche tempo fa quando quelle schermate venivano caricate troppo lentamente a causa delle mie impostazioni di 999 post. Post completo del blog qui - Plugin come 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",
    ) );
}

Se non hai bisogno di tutte le colonne, puoi estendere il plug-in sopra rimuovendo anche il contenuto di alcune colonne.

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

Pannello di controllo

Ogni utente entra nella dashboard, che è probabilmente la parte più lenta dell'interfaccia utente dell'amministratore. È possibile disattivare alcuni widget non necessari, invece di nasconderli:

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

Dati in uscita

Posso solo consigliare di utilizzare Snitch di Sergej Müller per monitorare quali dati provano a lasciare l'installazione. Il plug-in consente di sopprimere tutte o solo connessioni specifiche, nonché di individuare connessioni interne specifiche che puntano a compiti come cron job indesiderati e cose simili. Puoi vedere la sua fonte per esempi se non vuoi il pacchetto completo. Sergej normalmente scrive un codice molto leggibile con un generoso utilizzo degli spazi bianchi.


1
Puoi anche ottenere informazioni utili tramite il Plugin Debug Objects per vedere quali query, funzioni sono state attivate e per quanto tempo. Inoltre da quale funzione, il plugin proviene dalla query.
fusione

4

Consiglio di installare questo https://github.com/johnbillion/query-monitor e di guardare quanto segue: utilizzo della memoria, richieste HTTP, AJAX e query lente.

Potrebbe essere la tua revisione, AJAX di un plugin, una cattiva query, ecc.

Sarai in grado di vedere se hai bisogno di aggiungere più RAM al tuo server che di solito risolve molti problemi di amministrazione a caricamento lento, specialmente se hai più editor nell'amministratore.

Ma oltre ad alcuni trucchi qua e là non esiste una soluzione tutto in uno, devi controllare come i temi sono i plugin che interagiscono con l'amministratore.


2

Insieme ad alcune delle risposte ben suggerite sopra potresti limitare o disabilitare il "battito cardiaco" di wordpress che può rallentare notevolmente il tuo amministratore se hai molte schermate aperte o molti utenti che usano contemporaneamente. Diversi host come WP-Engine hanno effettivamente una variazione di questa configurazione automaticamente.

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

Un'altra cosa che potresti provare è armeggiare con alcune delle wp-config.phpcostanti. Disattivare le revisioni post sarebbe di aiuto senza dubbio, ma se non vuoi farlo, potresti almeno limitare le revisioni.

define('WP_POST_REVISIONS', 5);

Altre due costanti che di solito cambio per mantenere le cose ottimizzate sono quelle vuote e quelle di salvataggio automatico.

define('AUTOSAVE_INTERVAL', 600);
define( 'EMPTY_TRASH_DAYS', 3 );

Nessun problema. Aggiunte anche alcune altre opzioni.
Bryan Willis,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.