¿Cómo puedo acelerar mi sección de administración de WP?

12

Tenemos muchos sitios WP con un proxy entre los servidores en los que se encuentran e Internet.

Algunas cosas en WP simplemente no funcionan:

  • Fuentes RSS en el tablero
  • buscando temas
  • buscando complementos
  • actualizaciones principales

Hacemos todo de forma manual y realmente no hay problemas, excepto SLOWNESS en las cargas de página. Parece que casi todo en administración tarda de 4 a 5 segundos en procesarse, excepto agregar medios, que es sorprendentemente rápido.

¿Cuáles son algunas cosas iniciales que puedo verificar o hacer para acelerar el back-end? (el front-end vuela)

Picadura
fuente
3
Puede bloquear solicitudes externas definiendo define( 'WP_HTTP_BLOCK_EXTERNAL', true );en wp-config.php. También el administrador de WordPress pone en cola Open Sansy otras fuentes de Google. Puedes deshabilitar eso también. Hace que la sección de administración de carga sea un poco más rápida.
Robert hue
@Roberthue: casi parece que muchas de las páginas en administración están haciendo llamadas a la web. Nos gustaría desactivarlos a todos. Agregar el bloqueo de solicitud externa ahora para ver cómo reacciona.
STing
1
@Roberthue: no estoy seguro de por qué nunca he usado esto antes, ¿sabe cuándo se implementó WP_HTTP_BLOCK_EXTERNAL por primera vez? Lo agregué a mi complemento (tengo un complemento que propongo en todas partes) y hay una manera mucho más rápida de cargar todas las páginas. Agregue esto como respuesta y cualquier otro consejo para los sin cuadrícula.
STing
Ha estado allí por un par de años. No estoy seguro exactamente cuándo fue agregado. También estaba buscando formas de acelerar las páginas de administración cuando encontré este artículo
Robert hue
1
Como respuesta por favor. También ha estado funcionando durante mucho tiempo, probablemente (casi) tanto como la propia API HTTP.
Rarst

Respuestas:

12

jQuery / JavaScript en el pie de página

Una cosa que puede hacer es mover jQuery a la publicación del blog de pie de página . Por defecto no es necesario en el encabezado. Verificará si todo sigue funcionando bien, ya que normalmente solo hago eso para los temas:

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

Consultas

Otra cosa que acelera las pantallas de la tabla de lista de publicaciones es reducir el número de campos consultados. Noté ese problema hace un tiempo cuando esas pantallas se cargaban demasiado lento debido a la configuración de mis 999 publicaciones. Publicación completa del blog aquí : Plugin como 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",
    ) );
}

Si no necesita todas las columnas, puede ampliar el complemento anterior eliminando también el contenido de algunas columnas.

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

Tablero

Cada usuario ingresa en el tablero, que probablemente sea la parte más lenta de la interfaz de usuario de administración. Puede desactivar algunos widgets que no necesita, en lugar de ocultarlos:

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

Datos salientes

Solo puedo recomendar el uso de Snitch de Sergej Müller para monitorear qué datos intentan abandonar su instalación. El complemento permite suprimir todas o solo conexiones específicas, así como señalar conexiones internas específicas que apuntan a tareas como trabajos cron no deseados y cosas similares. Puede ver su fuente de ejemplos si no desea el paquete completo. Sergej normalmente escribe código muy legible con un generoso uso de espacios en blanco.

emperador
fuente
1
También puede obtener información útil a través de los objetos de depuración de complementos para ver qué consultas, funciones se activaron y durante cuánto tiempo. También de qué función, el complemento viene la consulta.
bueltge
4

Recomiendo instalar este https://github.com/johnbillion/query-monitor y mirar lo siguiente: uso de memoria, solicitudes HTTP, AJAX y consultas lentas.

Podrían ser sus revisiones, el AJAX de un complemento, una mala consulta, etc.

Podrá ver si necesita agregar más RAM a su servidor, lo que generalmente resuelve muchos problemas de administración de carga lenta, especialmente si tiene varios editores en el administrador.

Pero además de algunos trucos aquí y allá, no hay una solución todo en uno, debe verificar cómo los temas son complementos que interactúan con el administrador.

Wyck
fuente
2

Junto con algunas de las respuestas sugeridas anteriormente, puede limitar o deshabilitar el "latido" de wordpress que puede ralentizar drásticamente su administrador si tiene muchas pantallas abiertas o muchos usuarios usan a la vez. Varios hosts como WP-Engine en realidad tienen una variación de esta configuración automáticamente.

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

Otra cosa que podrías probar es jugar con algunas de las wp-config.phpconstantes. Desactivar las revisiones posteriores sería sin dudas una ayuda, pero si no desea hacerlo, al menos podría limitar las revisiones.

define('WP_POST_REVISIONS', 5);

Otras dos constantes que suelo cambiar para mantener las cosas optimizadas son la papelera vacía y las de autoguardado.

define('AUTOSAVE_INTERVAL', 600);
define( 'EMPTY_TRASH_DAYS', 3 );
Bryan Willis
fuente
No hay problema. También se agregaron algunas opciones más.
Bryan Willis