Como posso acelerar minha seção de administrador do WP?

12

Temos muitos sites WP com um proxy entre os servidores em que eles estão e a Internet.

Algumas coisas no WP simplesmente não funcionam:

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

Fazemos tudo manualmente e realmente não há problemas, exceto a SLOWNESS no carregamento da página. Parece que quase tudo no administrador leva 4-5 segundos para processar, exceto a adição de 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)

Picada
fonte
3
Você pode bloquear solicitações externas, definindo define( 'WP_HTTP_BLOCK_EXTERNAL', true );em wp-config.php. Também enfileiramentos de administração do WordPress Open Sanse outras fontes do Google. Você também pode desativar isso. Isso torna a seção de administração de carga um pouco mais rápida.
Robert hue
@ Roberthue - quase parece que muitas páginas do administrador estão fazendo chamadas para a web. Gostaríamos de desativar todos eles. Adicionando o bloqueio de solicitação externa agora para ver como ele reage.
STing 28/10/14
1
@ Roberthue - Não sei por que nunca usei isso antes - você sabe quando WP_HTTP_BLOCK_EXTERNAL foi implementado pela primeira vez. Eu o adicionei ao meu plugin (tenho um plugin que eu propago em todos os lugares) e existe uma maneira muito mais rápida de carregar todas as páginas. Adicione isso como resposta e outras dicas para o gridless.
STing 28/10/14
Está lá há alguns anos. Não tenho certeza exatamente quando foi adicionado. Eu também estava procurando maneiras de páginas de administração speedup quando eu encontrei este artigo
Robert matiz
1
Como resposta, por favor. Também há muito tempo, provavelmente (quase) desde que a própria API HTTP.
Rarst

Respostas:

12

jQuery / JavaScript no rodapé

Uma coisa que você pode fazer é mover o jQuery para o post no rodapé do blog . Por padrão, não é necessário no cabeçalho. Você terá que verificar se tudo ainda funciona bem, pois 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 postagem é reduzir o número de campos consultados. Percebi esse problema há um tempo atrás, quando essas telas estavam sendo carregadas muito lentamente devido às minhas configurações de 999 postagens. CheioPostagem blog aqui - Plug-in como 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 precisar de todas as colunas, poderá estender o plug-in acima com a remoção do conteúdo de algumas colunas.

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

painel de controle

Todo usuário entra no painel - o que provavelmente é a parte mais lenta da interface do usuário do administrador. Você pode desativar alguns widgets que não precisa, 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 enviados

Só posso recomendar o uso do Snitch, de 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 identificar conexões internas específicas que visam tarefas como tarefas cron indesejadas e coisas semelhantes. Você pode procurar na sua fonte exemplos, se não quiser o pacote completo. Sergej normalmente escreve código muito legível com um uso generoso de espaço em branco.

kaiser
fonte
1
Você também pode obter informações úteis através dos objetos de depuração do plug-in para ver quais consultas, funções foram acionadas e por quanto tempo ela é executada. Também a partir de qual função, o plugin vem a consulta.
bueltge
4

Eu recomendo instalar este https://github.com/johnbillion/query-monitor e examinar o seguinte: Uso de memória, solicitações HTTP, AJAX e consultas lentas.

Pode ser suas revisões, o AJAX de um plug-in, uma consulta incorreta etc.

Você poderá ver se precisa adicionar mais RAM ao 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 existe uma solução única, você precisa verificar como os temas dos plugins estão interagindo com o administrador.

Wyck
fonte
2

Juntamente com algumas das respostas bem sugeridas acima, você pode limitar ou desativar o "batimento cardíaco" do wordpress, o que pode diminuir drasticamente o seu administrador se você tiver muitas telas abertas ou muitos usuários usando ao mesmo tempo. Vários hosts como o WP-Engine, na verdade, têm 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 com algumas das wp-config.phpconstantes. Desativar as revisões pós sem dúvida ajudaria, mas se você não quiser fazer isso, poderá pelo menos limitar as revisões.

define('WP_POST_REVISIONS', 5);

Duas outras constantes que costumo mudar para manter as coisas otimizadas são as de lixo vazio e as de salvamento automático.

define('AUTOSAVE_INTERVAL', 600);
define( 'EMPTY_TRASH_DAYS', 3 );
Bryan Willis
fonte
Sem problemas. Adicionadas mais algumas opções também.
22716 Bryan Willis