Cum pot optimiza secțiunea de administrare WordPress?

28 oct. 2014, 17:28:41
Vizualizări: 20.4K
Voturi: 12

Avem mai multe site-uri WordPress cu un proxy între serverele pe care rulează și internet.

Unele funcționalități în WordPress pur și simplu nu funcționează:

  • feed-urile RSS în dashboard
  • căutarea temelor
  • căutarea plugin-urilor
  • actualizările de core

Facem totul manual și nu sunt probleme reale cu excepția LENTORILOR la încărcarea paginilor. Se pare că aproape totul în panoul de administrare durează 4-5 secunde pentru a se procesa, cu excepția adăugării fișierelor media - care este surprinzător de rapidă.

Care sunt primele lucruri pe care le pot verifica sau face pentru a accelera back-end-ul? (front-end-ul merge foarte rapid)

5
Comentarii

Puteți bloca cererile externe definind define( 'WP_HTTP_BLOCK_EXTERNAL', true ); în wp-config.php. De asemenea, panoul de administrare WordPress încarcă fonturile Open Sans și altele de la Google. Puteți dezactiva și acest lucru. Face încărcarea secțiunii de administrare puțin mai rapidă.

Robert hue Robert hue
28 oct. 2014 17:53:11

@Roberthue - se pare că multe dintre paginile din panoul de administrare fac apeluri către internet. Am dori să le dezactivăm pe toate. Adaug acum blocarea cererilor externe pentru a vedea cum reacționează.

STing STing
28 oct. 2014 18:04:53

@Roberthue - Nu sunt sigur de ce nu am folosit asta până acum - știi când a fost implementat pentru prima dată WP_HTTP_BLOCK_EXTERNAL? L-am adăugat în pluginul meu (am un plugin pe care îl propag peste tot) și paginile se încarcă mult mai rapid. Te rog adaugă acest lucru ca răspuns și orice alte sfaturi pentru cei fără experiență.

STing STing
28 oct. 2014 18:15:01

Există de câțiva ani. Nu sunt sigur exact când a fost adăugat. Căutam și eu modalități de a accelera paginile de administrare când am găsit acest articol

Robert hue Robert hue
28 oct. 2014 18:53:26

Ca răspuns, te rog. De asemenea, există de foarte mult timp, probabil (aproape) de când există API-ul HTTP în sine.

Rarst Rarst
28 oct. 2014 19:53:49
Toate răspunsurile la întrebare 3
1
12

jQuery / JavaScript în footer

Un lucru pe care îl poți face este să muți jQuery în footer post pe blog. În mod implicit nu este necesar în header. Va trebui să verifici dacă totul funcționează corect, de obicei fac asta doar pentru teme:

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

Interogări

Un alt lucru care accelerează ecranele cu lista de postări este reducerea numărului de câmpuri interogate. Am observat această problemă acum ceva timp când aceste ecrane se încărcau prea lent din cauza setărilor mele de 999 de postări. Postare completă aici - Plugin ca GitHub Gist.

<?php
/**
 * Plugin Name: (WCM) Liste de Postări Admin Mai Rapide
 * 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",
    ) );
}

Dacă nu ai nevoie de toate coloanele, poți extinde pluginul de mai sus prin eliminarea conținutului unor coloane.

add_filter( 'manage_edit-post_columns', function( $columns )
{
    # @TODO Elimină coloanele de care nu ai nevoie
    return $defaults;
} );

Panou de control

Fiecare utilizator intră în panoul de control - care este probabil cea mai lentă parte din interfața de administrare. Poți dezactiva unele widget-uri de care nu ai nevoie, în loc să le ascunzi:

<?php
/** Plugin Name: Elimină Widget-urile din Panou */
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' );
} );

Date de ieșire

Pot recomanda doar utilizarea Snitch de Sergej Müller pentru a monitoriza ce date încearcă să părăsească instalarea ta. Pluginul permite suprima toate sau doar anumite conexiuni, precum și identificarea conexiunilor interne care vizează sarcini precum job-uri cron nedorite și lucruri similare. Poți analiza codul său pentru exemple dacă nu dorești pachetul complet. Sergej scrie de obicei cod foarte lizibil, cu utilizare generoasă a spațiilor albe.

31 oct. 2014 01:25:33
Comentarii

Puteți obține, de asemenea, informații utile prin intermediul plugin-ului Debug Objects pentru a vedea care interogări și funcții au fost lansate și cât timp au rulat. De asemenea, din ce funcție sau plugin provine interogarea.

bueltge bueltge
12 feb. 2015 18:06:37
0

Recomand instalarea acestui https://github.com/johnbillion/query-monitor și verificarea următoarelor: utilizarea memoriei, cererile HTTP, AJAX și interogările lente.

Problema ar putea fi din cauza reviziilor, a unui plugin care folosește AJAX, a unei interogări neoptimizate, etc.

Veți putea vedea dacă este necesar să adăugați mai multă memorie RAM pe server, ceea ce de obicei rezolvă multe probleme de încărcare lentă în panoul de administrare, mai ales dacă aveți mai mulți editori care lucrează simultan.

Dar în afară de câteva trucuri și optimizări, nu există o soluție universală - trebuie să analizați cum interacționează temele și pluginurile în panoul de administrare.

31 oct. 2014 02:47:26
1

În plus față de unele dintre sugestiile de mai sus, puteți limita sau dezactiva funcția "heartbeat" din WordPress, care poate încetini semnificativ administrarea dacă aveți multe ferestre deschise sau mulți utilizatori activi simultan. Mai multe găzduiri precum WP-Engine au deja o variantă a acestei configurări implementată automat.

function optimize_heartbeat_settings( $settings ) {
    $settings['autostart'] = false; // Dezactivează pornirea automată a heartbeat
    $settings['interval'] = 60; // Setează intervalul la 60 de secunde
    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'); // Dezactivează heartbeat pe toate paginile în afară de editarea postărilor
}
add_action( 'init', 'disable_heartbeat_unless_post_edit_screen', 1 );

Un alt lucru pe care îl puteți încerca este ajustarea unor constante din wp-config.php. Dezactivarea reviziilor postărilor ar ajuta cu siguranță, dar dacă nu doriți să faceți acest lucru, puteți cel puțin limita numărul de revizii.

define('WP_POST_REVISIONS', 5); // Limitează numărul de revizii la 5

Alte două constante pe care le modific de obicei pentru a menține optimizarea sunt cele pentru golirea coșului și autosalvare.

define('AUTOSAVE_INTERVAL', 600); // Setează intervalul de autosalvare la 600 de secunde (10 minute)
define( 'EMPTY_TRASH_DAYS', 3 ); // Golirea automată a coșului după 3 zile
29 mar. 2016 19:34:21
Comentarii

Nicio problemă. Am adăugat și câteva opțiuni în plus.

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