Como posso acelerar minha seção administrativa do WP?

11

Temos muitos sites WP com um proxy entre os servidores em que eles se sentam e a internet.

Algumas coisas no WP simplesmente não funcionam:

  • Feeds RSS no painel
  • pesquisando temas
  • pesquisando plugins
  • atualizações principais

Fazemos tudo manualmente e realmente não há problemas, exceto o SLOWNESS nos carregamentos de página. Parece que quase tudo no admin leva 4-5 segundos para processar, exceto para adicionar mídia - o que é surpreendentemente rápido.

Quais são algumas das coisas iniciais que posso verificar ou fazer para acelerar o back-end? (o front-end voa)

    
por STing 28.10.2014 / 16:28

3 respostas

11

jQuery / JavaScript no rodapé

Uma coisa que você pode fazer é mova o jQuery para o rodapé post no blog . Por padrão, não é necessário no cabeçalho. Você terá que verificar se tudo ainda funciona bem, já que normalmente faço isso para temas:

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

Consultas

Outra coisa que acelera as telas da tabela de listas de postagem é reduzir o número de campos consultados. Eu notei esse problema há um tempo atrás quando essas telas estavam sendo carregadas muito devagar devido às minhas 999 configurações de posts. Full post do blog aqui - Plugin como o 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",
    ) );
}

Se você não precisa de todas as colunas, você pode estender acima do plugin removendo o conteúdo de algumas colunas também.

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

Painel

Todos os usuários entram no painel de controle, o que provavelmente é a parte mais lenta da interface do usuário do administrador. Você pode desativar alguns widgets desnecessários, em vez de apenas ocultá-los:

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

Dados de saída

Eu posso apenas recomendar o uso de Snitch por Sergej Müller para monitorar quais dados tentam sair da sua instalação. O plug-in permite suprimir todas ou apenas conexões específicas, bem como conexões internas específicas de pontos de alfinete que visam tarefas como tarefas cron indesejadas e coisas semelhantes. Você pode olhar sua fonte para exemplos se não quiser o pacote completo. Sergej normalmente escreve código muito legível com um generoso uso de espaço em branco.

    
por kaiser 31.10.2014 / 00:25
4

Eu recomendo instalar este enlace e observar o seguinte: Uso da memória, solicitações HTTP, AJAX e consultas lentas.

Poderia ser suas revisões, um AJAX de um plugin, uma consulta incorreta, etc.

Você poderá ver se precisa adicionar mais RAM ao seu servidor, o que geralmente resolve muitos problemas de administração de carregamento lento, especialmente se você tiver vários editores no administrador.

Mas, além de alguns truques aqui e ali, não há uma solução completa, você precisa verificar como os temas são plugins interagindo com o administrador.

    
por Wyck 31.10.2014 / 01:47
2

Junto com algumas das respostas bem sugeridas acima, você pode limitar ou desabilitar o "heartbeat" do wordpress, o que pode reduzir a velocidade do seu administrador se você tiver muitas telas abertas ou muitos usuários usarem ao mesmo tempo. Vários hosts, como o WP-Engine, possuem uma variação dessa configuração automaticamente.

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

Outra coisa que você pode tentar é mexer em algumas das constantes wp-config.php . Desativar as revisões do post seria sem dúvida ajuda, mas se você não quiser fazer isso, pode pelo menos limitar as revisões.

define('WP_POST_REVISIONS', 5);

Duas outras constantes que eu costumo alterar para manter as coisas otimizadas são as lixeiras vazias e autosave.

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

Tags