ฉันจะเร่งความเร็วส่วนผู้ดูแลระบบ WP ของฉันได้อย่างไร


12

เรามีเว็บไซต์ WP จำนวนมากที่มีพร็อกซีอยู่ระหว่างเซิร์ฟเวอร์ที่พวกเขานั่งอยู่กับอินเทอร์เน็ต

บางสิ่งใน WP ไม่ทำงาน:

  • RSS ฟีดบนแผงควบคุม
  • ค้นหาชุดรูปแบบ
  • ค้นหาปลั๊กอิน
  • การปรับปรุงหลัก

เราทำทุกอย่างด้วยตนเองและไม่มีปัญหาจริงๆยกเว้นความช้าในการโหลดหน้าเว็บ ดูเหมือนว่าเกือบทุกอย่างในผู้ดูแลระบบใช้เวลาประมวลผล 4-5 วินาทียกเว้นการเพิ่มสื่อซึ่งเร็วอย่างน่าประหลาดใจ

อะไรคือสิ่งเริ่มต้นที่ฉันสามารถตรวจสอบหรือทำเพื่อเร่งความเร็วแบ็กเอนด์ (ส่วนหน้าบิน)


3
คุณสามารถปิดกั้นการร้องขอจากภายนอกด้วยการกำหนดในdefine( 'WP_HTTP_BLOCK_EXTERNAL', true ); wp-config.phpนอกจากนี้ WordPress admin enqueues Open Sansและแบบอักษรอื่น ๆ จาก Google คุณสามารถปิดการใช้งานได้เช่นกัน ทำให้ส่วนผู้ดูแลโหลดเร็วขึ้นเล็กน้อย
Robert hue

@Roberthue - ดูเหมือนว่าหน้าเว็บจำนวนมากในผู้ดูแลระบบกำลังโทรออกไปยังเว็บ เราต้องการปิดทั้งหมด การเพิ่มการบล็อกคำขอภายนอกตอนนี้เพื่อดูว่ามันตอบสนองอย่างไร
ต่อย

1
@Roberthue - ไม่แน่ใจว่าทำไมฉันไม่เคยใช้มันมาก่อน - คุณรู้หรือไม่ว่าเมื่อ WP_HTTP_BLOCK_EXTERNAL ได้รับการใช้งานครั้งแรก ฉันเพิ่มลงในปลั๊กอินของฉัน (มีปลั๊กอินที่ฉันนำเสนอทุกที่) และมีวิธีที่เร็วกว่าในการโหลดหน้าทั้งหมด กรุณาเพิ่มนี่เป็นคำตอบและเคล็ดลับอื่น ๆ สำหรับ gridless
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 สรุปสาระสำคัญ

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

ข้อมูลขาออก

ฉันสามารถแนะนำให้ใช้Snitch โดย Sergej Müllerเพื่อตรวจสอบว่าข้อมูลใดที่พยายามออกจากการติดตั้งของคุณ ปลั๊กอินช่วยให้การปราบปรามการเชื่อมต่อทั้งหมดหรือเฉพาะเจาะจงเช่นเดียวกับการเชื่อมต่อภายในจุดที่เฉพาะเจาะจงที่เป้าหมายงานเช่นงาน cron ที่ไม่พึงประสงค์และสิ่งที่คล้ายกัน คุณสามารถดูแหล่งที่มาของตัวอย่างถ้าคุณไม่ต้องการแพคเกจเต็ม Sergej ปกติเขียนมากรหัสที่สามารถอ่านได้ด้วยการใช้พื้นที่สีขาวใจกว้าง


1
นอกจากนี้คุณยังสามารถระบุข้อมูลที่มีประโยชน์ผ่านทางปลั๊กอิน Debug Objects เพื่อดูว่ามีการสอบถามฟังก์ชันการทำงานใดและใช้เวลานานเท่าใด นอกจากนี้ยังมีฟังก์ชั่นที่ปลั๊กอินมาแบบสอบถาม
bueltge

4

ฉันขอแนะนำให้ติดตั้งhttps://github.com/johnbillion/query-monitorนี้และดูที่ต่อไปนี้: การใช้หน่วยความจำคำขอ HTTP, AJAX และแบบสอบถามช้า

อาจเป็นการแก้ไขของคุณ AJAX ของปลั๊กอินการสืบค้นที่ไม่ดี ฯลฯ

คุณจะสามารถดูว่าคุณต้องการเพิ่ม RAM เพิ่มเติมให้กับเซิร์ฟเวอร์ของคุณซึ่งมักจะแก้ปัญหาการโหลดช้าของผู้ดูแลระบบจำนวนมากโดยเฉพาะอย่างยิ่งถ้าคุณมีผู้แก้ไขหลายคนในผู้ดูแลระบบ

แต่นอกเหนือจากเทคนิคบางอย่างที่นี่และไม่มีวิธีแก้ปัญหาทั้งหมดในที่เดียวคุณต้องตรวจสอบว่าธีมมีการโต้ตอบกับผู้ดูแลระบบอย่างไร


2

พร้อมด้วยคำตอบที่แนะนำบางข้อข้างต้นคุณสามารถ จำกัด หรือปิดใช้งาน wordpress "heartbeat" ซึ่งอาจทำให้ผู้ดูแลระบบของคุณช้าลงอย่างมากหากคุณเปิดหน้าจอจำนวนมากหรือผู้ใช้หลายคนใช้งานพร้อมกัน โฮสต์หลายตัวเช่น 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.