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

11

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áginas. Parece que casi todo en el administrador tarda 4-5 segundos en procesarse, excepto en agregar medios, lo que es sorprendentemente rápido.

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

    
pregunta STing 28.10.2014 - 16:28

3 respuestas

11

jQuery / JavaScript en el pie de página

Una cosa que puedes hacer es mueve jQuery al pie de página entrada de blog . Es por defecto no es necesario en el encabezado. Tendrás que comprobar si todo sigue funcionando bien, ya que normalmente lo hago 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 la lista de publicaciones es reducir el número de campos consultados. Noté ese problema hace un tiempo cuando esas pantallas se estaban cargando demasiado lento debido a la configuración de mis 999 publicaciones. publicación de blog aquí - complemento as 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 extender 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;
} );

Panel de control

Cada usuario ingresa al panel de control, que probablemente sea la parte más lenta en la IU de administración. Podría desactivar algunos widgets que no necesita, en lugar de simplemente esconderlos:

<?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

Puedo recomendar el uso de Snitch por Sergej Müller para monitorear qué datos intentan dejar tu instalación. El complemento permite suprimir todas las conexiones o solo las específicas, así como las conexiones internas específicas de puntos específicos que se dirigen 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 uso generoso de espacios en blanco.

    
respondido por el kaiser 31.10.2014 - 00:25
4

Recomiendo instalar este enlace y observar lo siguiente: Uso de memoria, solicitudes HTTP, AJAX y consultas lentas.

Pueden ser sus revisiones, el AJAX de un complemento, una consulta incorrecta, etc.

Podrá ver si necesita agregar más RAM a su servidor, lo que generalmente resuelve muchos problemas de administración 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 comprobar cómo interactúan los temas con el administrador.

    
respondido por el Wyck 31.10.2014 - 01:47
2

Junto con algunas de las respuestas bien sugeridas de arriba, puede limitar o deshabilitar el "latido del corazón" de wordpress, lo que puede ralentizar drásticamente a su administrador si tiene muchas pantallas abiertas o muchos usuarios que usan al mismo tiempo. Varios hosts como WP-Engine realmente 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 intentar es jugar con algunas de las constantes wp-config.php . Sin lugar a dudas, desactivar las revisiones de publicación ayudaría, pero si no desea hacerlo, al menos podría limitar las revisiones.

define('WP_POST_REVISIONS', 5);

Otras dos constantes que generalmente cambio para mantener las cosas optimizadas son las de basura vacía y las de guardado automático.

define('AUTOSAVE_INTERVAL', 600);
define( 'EMPTY_TRASH_DAYS', 3 );
    
respondido por el Bryan Willis 29.03.2016 - 18:34

Lea otras preguntas en las etiquetas