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

28 oct 2014, 17:28:41
Vistas: 20.4K
Votos: 12

Tenemos varios sitios WordPress con un proxy entre los servidores donde se alojan e internet.

Algunas funciones en WordPress simplemente no funcionan:

  • Feeds RSS en el escritorio
  • Búsqueda de temas
  • Búsqueda de plugins
  • Actualizaciones del núcleo

Hacemos todo manualmente y realmente no hay problemas excepto por la LENTITUD en la carga de páginas. Parece que casi todo en el administrador tarda 4-5 segundos en procesarse, excepto la carga de medios, que sorprendentemente es rápida.

¿Cuáles son algunas cosas iniciales que puedo verificar o hacer para acelerar el backend? (el frontend funciona muy rápido)

5
Comentarios

Puedes bloquear solicitudes externas definiendo define( 'WP_HTTP_BLOCK_EXTERNAL', true ); en wp-config.php. Además, el administrador de WordPress carga Open Sans y otras fuentes de Google. También puedes desactivar eso. Hace que la sección de administración cargue un poco más rápido.

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

@Roberthue - parece que muchas páginas del administrador están haciendo llamadas externas a la web. Nos gustaría desactivarlas todas. Voy a añadir ahora el bloqueo de solicitudes externas para ver cómo reacciona.

STing STing
28 oct 2014 18:04:53

@Roberthue - No estoy seguro de por qué nunca he usado esto antes. ¿Sabes cuándo se implementó por primera vez WP_HTTP_BLOCK_EXTERNAL? Lo he añadido a mi plugin (tengo un plugin que propago en todas partes) y las páginas cargan mucho más rápido. Por favor, añade esto como respuesta y cualquier otro consejo para los que no usan grids.

STing STing
28 oct 2014 18:15:01

Ha estado ahí por un par de años. No estoy seguro exactamente cuándo fue añadido. También estaba buscando formas de acelerar las páginas de administración cuando encontré este artículo

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

Como respuesta por favor. También ha estado ahí por mucho tiempo, probablemente (casi) desde que existe la API HTTP misma.

Rarst Rarst
28 oct 2014 19:53:49
Todas las respuestas a la pregunta 3
1
12

jQuery / JavaScript en el pie de página

Una cosa que puedes hacer es mover jQuery al pie de página artículo del blog. Por defecto no es necesario en el encabezado. Tendrás que verificar si todo sigue funcionando, ya que normalmente solo hago esto para temas:

<?php
/* Plugin Name: Mover jQuery al pie de página */
function( 'admin_enqueue_scripts', function( $hook )
{
    $GLOBALS['wp_scripts']->add_data( 'jquery', 'group', 1 );
} );

Consultas

Otra cosa que acelera las pantallas de listado 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 mi configuración de 999 publicaciones. Artículo completo aquí - Plugin como GitHub Gist.

<?php
/**
 * Plugin Name: (WCM) Listas de publicaciones en admin más rápidas
 * 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 necesitas todas las columnas, podrías extender el plugin anterior eliminando también el contenido de algunas columnas.

add_filter( 'manage_edit-post_columns', function( $columns )
{
    # @TODO Elimina las columnas que no necesites
    return $defaults;
} );

Escritorio

Cada usuario entra al escritorio - que probablemente es la parte más lenta de la interfaz de administración. Podrías desactivar algunos widgets que no necesites, en lugar de solo ocultarlos:

<?php
/** Plugin Name: Eliminar widgets del escritorio */
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 usar Snitch de Sergej Müller para monitorear qué datos intentan salir de tu instalación. El plugin permite suprimir todas o solo conexiones específicas, así como identificar conexiones internas específicas que apuntan a tareas como trabajos cron no deseados y cosas similares. Puedes mirar su código fuente para ejemplos si no quieres el paquete completo. Sergej normalmente escribe código muy legible con un uso generoso de espacios en blanco.

31 oct 2014 01:25:33
Comentarios

También puedes obtener información útil a través del plugin Debug Objects para ver qué consultas y funciones se ejecutaron y cuánto tiempo tardaron. Además, desde qué función o plugin proviene la consulta.

bueltge bueltge
12 feb 2015 18:06:37
0

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

Podrían ser tus revisiones, AJAX de un plugin, una consulta mal optimizada, etc.

Podrás ver si necesitas añadir más RAM a tu servidor, lo que normalmente resuelve muchos problemas de lentitud en el admin, especialmente si tienes múltiples editores trabajando en el panel de administración.

Pero además de algunos trucos aquí y allá, no hay una solución mágica, necesitas investigar cómo los temas y plugins están interactuando con el administrador.

31 oct 2014 02:47:26
1

Junto con algunas de las respuestas bien sugeridas anteriormente, podrías limitar o desactivar el "heartbeat" de WordPress, lo que puede ralentizar dramáticamente tu administrador si tienes muchas pantallas abiertas o muchos usuarios trabajando simultáneamente. Varios hosts como WP-Engine 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 ajustar algunas de las constantes en wp-config.php. Desactivar las revisiones de publicaciones sin duda ayudaría, pero si no quieres hacer eso, al menos podrías limitar las revisiones.

define('WP_POST_REVISIONS', 5);

Otras dos constantes que suelo cambiar para mantener las cosas optimizadas son las de vaciar la papelera y el autoguardado.

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

No hay problema. También agregué algunas opciones más.

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