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

12

Nous avons de nombreux sites WP avec un proxy entre les serveurs sur lesquels ils se trouvent 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 de base

Nous faisons tout manuellement et il n'y a vraiment aucun problème, sauf pour la lenteur sur les chargements de page. Il semble que presque tout dans l'administration prend 4 à 5 secondes à traiter, à 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? (le front vole)

Piquer
la source
3
Vous pouvez bloquer les demandes externes en définissant define( 'WP_HTTP_BLOCK_EXTERNAL', true );dans wp-config.php. En outre, les mises en file d'attente d'administration WordPress Open Sanset d'autres polices de Google. Vous pouvez également désactiver cela. Cela rend la section d'administration du chargement un peu plus rapide.
Robert hue
@Roberthue - il semble presque que la plupart des pages de l'administration passent des appels sur le Web. Nous aimerions tous les désactiver. Ajout du blocage de demande externe maintenant pour voir comment il réagit.
STing
1
@Roberthue - Je ne sais pas pourquoi je ne l'ai jamais utilisé auparavant - savez-vous quand WP_HTTP_BLOCK_EXTERNAL a été implémenté pour la première fois. Je l'ai ajouté à mon plugin (j'ai un plugin que je propage partout) et il y a moyen beaucoup plus rapide de charger toutes les pages. Veuillez ajouter ceci comme réponse et tout autre conseil pour les personnes sans grille.
STing
Il existe depuis quelques années. Je ne sais pas exactement quand il a été ajouté. Je cherchais également des moyens d'accélérer les pages d'administration lorsque j'ai trouvé cet article
Robert hue
1
Comme réponse s'il vous plaît. Il existe également depuis très longtemps, probablement (presque) aussi longtemps que l'API HTTP elle-même.
Rarst

Réponses:

12

jQuery / JavaScript dans le pied de page

Une chose que vous pouvez faire est de déplacer jQuery vers le billet de blog de pied de page . Il n'est pas nécessaire par défaut dans l'en-tête. Vous devrez vérifier si tout fonctionne toujours dur, 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 du tableau de la liste des publications est de réduire le nombre de champs interrogés. J'ai remarqué ce problème il y a quelque temps lorsque ces écrans se chargeaient trop lentement en raison de mes paramètres de publication 999. Article de blog complet ici - Plugin en tant que 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 étendre le plugin ci-dessus en supprimant également le 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 - qui est probablement la partie la plus lente de l'interface d'administration. Vous pouvez désactiver certains widgets dont vous n'avez pas besoin, au lieu de simplement les masquer:

<?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 d'utiliser Snitch de Sergej Müller pour surveiller les données qui tentent de quitter votre installation. Le plugin permet de supprimer toutes ou uniquement certaines connexions spécifiques ainsi que de localiser des connexions internes spécifiques qui ciblent des tâches telles que les tâches cron indésirables et des choses similaires. Vous pouvez regarder sa source pour des exemples si vous ne voulez pas le package complet. Sergej écrit normalement du code très lisible avec une utilisation généreuse des espaces blancs.

kaiser
la source
1
Vous pouvez également consulter des informations utiles via les objets de débogage du plug-in pour voir quelles requêtes, fonctions ont été déclenchées et combien de temps elle a duré. De quelle fonction, le plugin provient également la requête.
bueltge
4

Je recommande d'installer ce https://github.com/johnbillion/query-monitor et de regarder les éléments suivants: utilisation de la mémoire, requêtes HTTP, AJAX et requêtes lentes.

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

Vous pourrez voir si vous avez besoin d'ajouter plus de RAM à votre serveur, ce qui résout généralement beaucoup de problèmes d'administration à chargement lent, surtout si vous avez plusieurs éditeurs dans l'administrateur.

Mais à part quelques astuces ici et là, il n'y a pas de solution tout-en-un, vous devez vérifier comment les thèmes interagissent avec les plugins avec l'administrateur.

Wyck
la source
2

Avec certaines des réponses bien suggérées ci-dessus, vous pouvez limiter ou désactiver le «rythme cardiaque» de wordpress, ce qui peut considérablement ralentir votre administrateur si vous avez beaucoup d'écrans ouverts ou que de nombreux utilisateurs utilisent en même temps. 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 );

Une autre chose que vous pourriez essayer est de bricoler certaines des wp-config.phpconstantes. Désactiver les révisions de poste serait sans aucun doute utile, mais si vous ne voulez pas le faire, vous pouvez au moins limiter les révisions.

define('WP_POST_REVISIONS', 5);

Deux autres constantes que je modifie habituellement pour garder les choses optimisées sont les poubelles vides et celles enregistrées automatiquement.

define('AUTOSAVE_INTERVAL', 600);
define( 'EMPTY_TRASH_DAYS', 3 );
Bryan Willis
la source
Aucun problème. Ajout de quelques options supplémentaires également.
Bryan Willis