Comment puis-je accélérer ma section d'administration WP?

11

Nous avons de nombreux sites WP avec un proxy entre les serveurs sur lesquels ils sont assis et Internet.

Certaines choses dans WP ne fonctionnent tout simplement pas:

  • Flux RSS sur le tableau de bord
  • recherche de thèmes
  • recherche de plugins
  • mises à jour principales

Nous faisons tout manuellement et il n’ya vraiment aucun problème, sauf pour SLOWNESS lors du chargement de page. Il semble que presque tout dans l’administration demande 4 à 5 secondes de traitement, à l’exception de l’ajout de médias, ce qui est étonnamment rapide.

Quelles sont les premières choses que je peux vérifier ou faire pour accélérer le back-end? (les mouches frontales)

    
posée STing 28.10.2014 - 16:28

3 réponses

11

jQuery / JavaScript dans le pied de page

Une chose à faire est de déplacez jQuery vers le pied de page article de blog . C'est par défaut inutile dans l'en-tête. Vous aurez à vérifier si tout fonctionne toujours bien, comme je le fais normalement pour les thèmes:

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

Requêtes

Une autre chose qui accélère les écrans de tableau de liste de publication est la réduction du nombre de champs interrogés. J'ai remarqué ce problème il y a quelque temps, lorsque le chargement de ces écrans était trop lent en raison des paramètres de 999 messages. bloguer ici complet - Plugin 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 vous n'avez pas besoin de toutes les colonnes, vous pouvez également ajouter au-dessus du plug-in la suppression du contenu de certaines colonnes.

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

Tableau de bord

Chaque utilisateur entre dans le tableau de bord - ce qui est probablement la partie la plus lente de l'interface utilisateur d'administration. Vous pouvez désactiver certains widgets dont vous n’avez pas besoin au lieu de les cacher:

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

Données sortantes

Je ne peux que recommander d'utiliser Snitch de Sergej Müller pour surveiller les données qui tentent de quitter votre installation. Le plugin permet de supprimer toutes les connexions ou seulement certaines connexions spécifiques, ainsi que les connexions internes spécifiques à des points de repère qui ciblent des tâches telles que les tâches cron indésirables et des tâches similaires. Vous pouvez consulter sa source pour des exemples si vous ne voulez pas le package complet. Sergej écrit normalement un code très lisible avec une utilisation généreuse des espaces.

    
réponse donnée kaiser 31.10.2014 - 00:25
4

Je vous recommande d'installer cette enlace et d'examiner les éléments suivants: utilisation de la mémoire, requêtes HTTP, AJAX et requêtes lentes.

Cela pourrait être vos révisions, AJAX d'un plugin, une mauvaise requête, etc.

Vous serez en mesure de voir si vous devez ajouter plus de RAM à votre serveur, ce qui résout généralement de nombreux problèmes d'administration avec un chargement lent, en particulier si vous avez plusieurs éditeurs dans l'administrateur.

Mais en plus de quelques astuces ici et là, il n’existe pas de solution "tout en un", vous devez vérifier comment les thèmes des plugins interagissent avec l’administrateur.

    
réponse donnée Wyck 31.10.2014 - 01:47
2

En plus des réponses suggérées ci-dessus, vous pouvez limiter ou désactiver le "battement de coeur" de wordpress, ce qui peut considérablement ralentir votre administrateur si de nombreux écrans sont ouverts ou que plusieurs utilisateurs en utilisent simultanément. Plusieurs hôtes comme WP-Engine utilisent en réalité une variante de cette configuration.

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

Vous pouvez également essayer de bricoler certaines des constantes wp-config.php . Désactiver les révisions de publication aiderait sans aucun doute, mais si vous ne le souhaitez pas, vous pouvez au moins limiter les révisions.

define('WP_POST_REVISIONS', 5);

Deux autres constantes que je modifie généralement pour garder les choses optimisées sont les corbeilles vides et les sauvegardes automatiques.

define('AUTOSAVE_INTERVAL', 600);
define( 'EMPTY_TRASH_DAYS', 3 );
    
réponse donnée Bryan Willis 29.03.2016 - 18:34

Lire d'autres questions sur les étiquettes