web-dev-qa-db-fra.com

Comment puis-je accélérer mon WP section admin?

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

Certaines choses dans WP ne fonctionnent tout simplement pas:

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

Nous faisons tout manuellement et il n'y a 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, à part l’ajout de médias, ce qui est étonnamment rapide.

Quelles sont les choses initiales que je peux vérifier ou faire pour accélérer le traitement? (les mouches frontales)

11
STing

jQuery/JavaScript dans le pied de page

Une chose que vous pouvez faire est de déplacer jQuery au pied de page. article de blog  . C'est par défaut inutile dans l'en-tête. Vous aurez à vérifier si tout fonctionne encore, 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 );
} );

Des requêtes

Une autre chose qui accélère les écrans de table 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 de la configuration de mes 999 messages. Complet billet de blog ici - Plugin comme 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 plugin 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 de l'administrateur. 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 peux simplement recommander l’utilisation de 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 aux 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 very du code lisible avec une utilisation généreuse des espaces.

11
kaiser

Je recommande d'installer ce https://github.com/johnbillion/query-monitor 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 à part quelques astuces ici et là, il n’existe pas de solution tout en un, vous devez vérifier de quelle manière les thèmes des plug-ins interagissent avec l’administrateur.

4
Wyck

En plus des réponses suggérées ci-dessus, vous pouvez limiter ou désactiver Wordpress "Heartbeat", ce qui peut considérablement ralentir votre administrateur si de nombreux écrans sont ouverts ou si plusieurs utilisateurs l'utilisent simultanément. Plusieurs hôtes comme WP-Engine ont en fait une variante de cette configuration automatiquement.

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 change habituellement pour garder les choses optimisées sont les corbeilles vides et les sauvegardes automatiques.

define('AUTOSAVE_INTERVAL', 600);
define( 'EMPTY_TRASH_DAYS', 3 );
2
Bryan Willis