WP 관리 섹션의 속도를 높이려면 어떻게해야합니까?


12

우리는 서버와 인터넷 사이에 프록시가있는 많은 WP 사이트를 보유하고 있습니다.

WP의 일부 기능은 작동하지 않습니다.

  • 대시 보드의 RSS 피드
  • 테마를 찾고
  • 플러그인을 찾고
  • 핵심 업데이트

우리는 수동으로 모든 작업을 수행하며 페이지로드시 SLOWNESS를 제외하고는 실제로 아무런 문제가 없습니다. 미디어를 추가하는 것을 제외하고는 관리자의 거의 모든 것이 처리하는 데 4-5 초가 걸리는 것으로 보입니다.

백엔드 속도를 높이기 위해 확인하거나 수행 할 수있는 초기 작업은 무엇입니까? (프런트 엔드)


3
에 정의 define( 'WP_HTTP_BLOCK_EXTERNAL', true );하여 외부 요청을 차단할 수 있습니다 wp-config.php. 또한 Open SansGoogle의 WordPress 관리자 대기열 및 기타 글꼴. 당신도 비활성화 할 수 있습니다. 로드 관리자 섹션이 조금 더 빨라집니다.
Robert hue

@Roberthue-관리자의 많은 페이지가 웹을 호출하는 것 같습니다. 우리는 그들 모두를 끄고 싶습니다. 외부 요청 차단을 추가하여 반응 방식을 확인하십시오.
STing

1
@Roberthue-내가 왜 이것을 사용하지 않았는지 잘 모르겠습니다. WP_HTTP_BLOCK_EXTERNAL이 처음 구현 된 시점을 알고 있습니까? 나는 그것을 플러그인에 추가했다 (플러그인을 어디에나 전파한다) 그리고 모든 페이지를 더 빨리 로딩하는 방법이있다. 이것을 그리드리스에 대한 답변과 다른 팁으로 추가하십시오.
STing

몇 년 동안 거기에있었습니다. 정확히 언제 추가되었는지 확실하지 않습니다. 또한 이 기사를
Robert hue

1
답으로 부탁드립니다. 또한 HTTP API 자체만큼이나 오랫동안 사용되었습니다.
Rarst

답변:


12

바닥 글의 jQuery / JavaScript

할 수있는 한 가지는 jQuery를 바닥 글 블로그 게시물옮기는 것 입니다. 헤더에는 기본적으로 필요하지 않습니다. 내가 일반적으로 테마를 위해 그렇게하는 것처럼 모든 것이 여전히 제대로 작동하는지 확인해야합니다.

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

쿼리

게시물 목록 테이블 화면의 속도를 높이는 또 다른 방법은 쿼리 된 필드 수를 줄이는 것입니다. 내 999 게시물 설정으로 인해 화면이 너무 느리게로드되는 문제가 있음을 알았습니다. 전체 블로그 게시물 -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",
    ) );
}

모든 열이 필요하지 않은 경우 일부 열의 내용을 제거하여 플러그인 위까지 확장 할 수 있습니다.

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

계기반

모든 사용자는 대시 보드에 입장합니다. 관리 UI에서 가장 느린 부분 일 것입니다. 필요하지 않은 일부 위젯을 숨기지 않고 비활성화 할 수 있습니다.

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

발신 데이터

Sergej Müller의 Snitch를 사용 하여 설치를 떠나려는 데이터를 모니터링하는 것이 좋습니다 . 플러그인을 사용하면 원치 않는 크론 작업 및 이와 유사한 작업을 대상으로하는 특정 내부 연결뿐만 아니라 특정 또는 모든 특정 연결을 억제 할 수 있습니다. 전체 패키지를 원하지 않으면 소스를 통해 예제를 볼 수 있습니다. 세르게이는 일반적으로 쓰는 매우 관대 한 흰색 공간 사용과 함께 읽을 수있는 코드를.


1
플러그인 디버그 객체를 통해 유용한 정보를 얻을 수 있으며, 어떤 쿼리, 함수가 실행되었으며 얼마나 오래 실행되었는지 확인할 수 있습니다. 또한 어떤 기능에서 플러그인이 쿼리를 제공합니다.
bueltge

4

https://github.com/johnbillion/query-monitor를 설치 하고 메모리 사용량, HTTP 요청, AJAX 및 느린 쿼리를 보는 것이 좋습니다 .

수정 사항, 플러그인의 AJAX, 잘못된 쿼리 등일 수 있습니다.

서버에 더 많은 RAM을 추가해야하는지 확인할 수 있으며, 특히 관리자에 여러 편집기가있는 경우로드 속도가 느린 관리 문제를 해결합니다.

그러나 여기에 몇 가지 트릭 외에도 하나의 솔루션이 없습니다. 테마가 플러그인과 관리자가 상호 작용하는 방식을 확인해야합니다.


2

위의 잘 제안 된 답변 중 일부와 함께 당신은 한 번에 많은 화면을 열거 나 많은 사용자가 사용하는 경우 관리자를 크게 느리게 할 수있는 워드 프레스 "하트 비트"를 제한하거나 비활성화 할 수 있습니다. WP-Engine과 같은 여러 호스트는 실제로이 설정의 변형을 자동으로 갖습니다.

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

당신이 시도 할 수있는 또 다른 것은 wp-config.php상수 중 일부를 땜질하는 것입니다 . 수정 후 게시를 해제해도 도움이되지 않지만, 원하지 않으면 수정을 제한 할 수 있습니다.

define('WP_POST_REVISIONS', 5);

일을 최적화하기 위해 일반적으로 변경하는 두 가지 다른 상수는 빈 휴지통과 자동 저장입니다.

define('AUTOSAVE_INTERVAL', 600);
define( 'EMPTY_TRASH_DAYS', 3 );

문제 없어요. 몇 가지 옵션이 추가되었습니다.
Bryan Willis
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.