Як я можу пришвидшити свою секцію адміністратора WP?


12

У нас є багато сайтів WP з проксі-сервером, на якому вони сидять, та в Інтернеті.

Деякі речі в WP просто не працюють:

  • RSS-канали на інформаційній панелі
  • шукаючи теми
  • шукаючи плагіни
  • основні оновлення

Ми робимо все вручну і насправді проблем немає, крім СТРАХУВАННЯ при завантаженні сторінки. Здається, що майже все в адміністраторі займає 4-5 секунд на обробку, за винятком додавання медіа - що дивно швидко.

Які основні речі я можу перевірити або зробити, щоб пришвидшити роботу бек-енду? (летить передня частина)


3
Ви можете заблокувати зовнішні запити, вказавши define( 'WP_HTTP_BLOCK_EXTERNAL', true );в wp-config.php. Також адміністратор WordPress запитує Open Sansі інші шрифти від Google. Ви також можете відключити це. Це робить завантаження розділу адміністратора трохи швидше.
Роберт відтінок

@Roberthue - майже здається, що багато сторінок адміністратора здійснюють дзвінки в Інтернет. Ми хотіли б їх усі вимкнути. Додайте блокування зовнішнього запиту, щоб побачити, як він реагує.
STing

1
@Roberthue - Не впевнений, чому я ніколи цього не використовував - чи знаєте ви, коли WP_HTTP_BLOCK_EXTERNAL був вперше впроваджений. Я додав його до свого плагіна (є плагін, який я пропоную скрізь), і є спосіб швидше завантажити всі сторінки. Будь ласка, додайте це як відповідь та будь-які інші поради щодо сітки.
STing

Там вже пару років. Не точно знаю, коли саме його додали. Я також шукав способи пришвидшити сторінки адміністратора, коли знайшов цю статтю
Роберт відтінок

1
Як відповідь будь ласка. Крім того, він існував дуже давно, ймовірно (майже) до тих пір, як сам HTTP API.
Рарст

Відповіді:


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

Панель приладів

Кожен користувач заходить на панель приладів - це, мабуть, найповільніша частина адміністративного інтерфейсу. Ви можете відключити деякі віджети, які вам не потрібні, замість того, щоб просто заховати їх:

<?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 та подібні речі. Ви можете переглянути приклади, якщо ви не хочете повного пакету. Сергій зазвичай пише дуже читаний код із великим використанням білого простору.


1
Ви також можете отримати корисну Інформацію через об’єкти налагодження плагінів, щоб побачити, які запити, функції було запущено та як довго вона працює. Також з якої функції плагін надходить запит.
Бульдж

4

Я рекомендую встановити цей https://github.com/johnbillion/query-monitor і подивитися на наступне: Використання пам'яті, HTTP-запити, AJAX та повільні запити.

Це може бути ваша редакція, AJAX плагіна, поганий запит тощо.

Ви зможете побачити, чи потрібно додати більше оперативної пам’яті на ваш сервер, що зазвичай вирішує багато проблем з повільним завантаженням адміністратора, особливо якщо у адміністратора є кілька редакторів.

Але крім деяких хитрощів тут і там немає всього в одному рішенні, вам потрібно перевірити, як теми плагінів взаємодіють з адміністратором.


2

Поряд з деякими добре запропонованими відповідями вище, ви можете обмежити або відключити wordpress "серцебиття", що може різко уповільнити вашого адміністратора, якщо у вас відкрито багато екранів або багато користувачів, які використовують одразу. Кілька хостів на зразок 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 );

Нема проблем. Додано ще кілька варіантів.
Брайан Вілліс
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.