Come posso velocizzare la sezione di amministrazione di WordPress?

28 ott 2014, 17:28:41
Visualizzazioni: 20.4K
Voti: 12

Abbiamo diversi siti WordPress con un proxy tra i server su cui risiedono e internet.

Alcune funzionalità in WordPress semplicemente non funzionano:

  • Feed RSS nella dashboard
  • ricerca dei temi
  • ricerca dei plugin
  • aggiornamenti del core

Facciamo tutto manualmente e non ci sono problemi particolari tranne la LENTEZZA nel caricamento delle pagine. Sembra che quasi tutto nell'amministrazione impieghi 4-5 secondi per essere elaborato, ad eccezione dell'aggiunta di media - che è sorprendentemente veloce.

Quali sono le prime cose che posso controllare o fare per velocizzare il back-end? (il front-end va velocissimo)

5
Commenti

Puoi bloccare le richieste esterne definendo define( 'WP_HTTP_BLOCK_EXTERNAL', true ); in wp-config.php. Inoltre, l'amministrazione di WordPress carica i font Open Sans e altri da Google. Puoi disabilitare anche questo. Rende il caricamento della sezione di amministrazione un po' più veloce.

Robert hue Robert hue
28 ott 2014 17:53:11

@Roberthue - sembra quasi che molte delle pagine nell'amministrazione stiano effettuando chiamate verso il web. Vorremmo disattivarle tutte. Aggiungo ora il blocco delle richieste esterne per vedere come reagisce.

STing STing
28 ott 2014 18:04:53

@Roberthue - Non sono sicuro del perché non l'abbia 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 propago ovunque) e le pagine si caricano molto più velocemente. Per favore aggiungilo come risposta e qualsiasi altro suggerimento per i gridless.

STing STing
28 ott 2014 18:15:01

È presente da alcuni anni. Non sono sicuro di quando sia stato aggiunto esattamente. Stavo anche cercando modi per velocizzare le pagine di amministrazione quando ho trovato questo articolo

Robert hue Robert hue
28 ott 2014 18:53:26

Come risposta per favore. Inoltre è presente da molto tempo, probabilmente (quasi) da quando esiste l'HTTP API stesso.

Rarst Rarst
28 ott 2014 19:53:49
Tutte le risposte alla domanda 3
1
12

jQuery / JavaScript nel footer

Una cosa che puoi fare è spostare jQuery nel footer articolo del blog. Di default non è necessario nell'header. Dovrai verificare che tutto funzioni ancora, dato che normalmente lo faccio solo per i temi:

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

Query

Un'altra cosa che velocizza le schermate dell'elenco dei post è ridurre il numero di campi interrogati. Ho notato questo problema tempo fa quando queste schermate si caricavano troppo lentamente a causa delle mie impostazioni con 999 post. Articolo completo qui - Plugin come GitHub Gist.

<?php
/**
 * Plugin Name: (WCM) Liste Admin Post Più Veloci
 * 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 ti servono tutte le colonne, potresti estendere il plugin sopra rimuovendo il contenuto di alcune colonne.

add_filter( 'manage_edit-post_columns', function( $columns )
{
    # @TODO Rimuovi le colonne che non ti servono
    return $defaults;
} );

Dashboard

Ogni utente entra nella dashboard - che è probabilmente la parte più lenta dell'interfaccia admin. Potresti disattivare alcuni widget che non ti servono, invece di semplicemente nasconderli:

<?php
/** Plugin Name: Rimuovi Widget della Dashboard */
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 raccomandare di usare Snitch di Sergej Müller per monitorare quali dati cercano di lasciare la tua installazione. Il plugin permette di sopprimere tutte o solo specifiche connessioni, oltre a identificare connessioni interne specifiche che puntano a task come cron job indesiderati e cose simili. Puoi guardare il suo codice sorgente per esempi se non vuoi il pacchetto completo. Sergej normalmente scrive codice molto leggibile con un generoso uso di spazi bianchi.

31 ott 2014 01:25:33
Commenti

Puoi anche ottenere informazioni utili tramite il plugin Debug Objects per vedere quali query e funzioni sono state eseguite, quanto tempo hanno impiegato e da quale funzione o plugin proviene la query.

bueltge bueltge
12 feb 2015 18:06:37
0

Consiglio di installare questo https://github.com/johnbillion/query-monitor e verificare i seguenti aspetti: utilizzo della memoria, richieste HTTP, AJAX e query lente.

Potrebbero essere le revisioni, un plugin che utilizza AJAX, una query inefficiente, ecc.

Sarai in grado di capire se è necessario aggiungere più RAM al tuo server, cosa che solitamente risolve molti problemi di lentezza nel pannello di amministrazione, specialmente se ci sono più editor che lavorano contemporaneamente.

Ma oltre a qualche trucco qua e là non esiste una soluzione universale, devi verificare come i temi e i plugin interagiscono con l'area di amministrazione.

31 ott 2014 02:47:26
1

Oltre ad alcune delle risposte ben suggerite sopra, potresti limitare o disabilitare il "heartbeat" di WordPress che può rallentare drasticamente l'area di amministrazione se hai molte schermate aperte o molti utenti che lo utilizzano contemporaneamente. Diversi host come WP-Engine hanno già una variante 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 è modificare alcune costanti del file wp-config.php. Disabilitare le revisioni dei post aiuterebbe senza dubbio, ma se non vuoi farlo, potresti almeno limitarle.

define('WP_POST_REVISIONS', 5);

Altre due costanti che di solito modifico per mantenere le cose ottimizzate sono quelle relative al cestino vuoto e agli autosalvataggi.

define('AUTOSAVE_INTERVAL', 600);
define( 'EMPTY_TRASH_DAYS', 3 );
29 mar 2016 19:34:21
Commenti

Nessun problema. Ho aggiunto anche qualche opzione in più.

Bryan Willis Bryan Willis
31 mar 2016 01:37:57