如何加快我的WP管理部分?


12

我们有许多WP站点,在它们所在的服务器和Internet之间具有代理。

WP中的某些功能根本不起作用:

  • 仪表板上的RSS提要
  • 查找主题
  • 查找插件
  • 核心更新

我们手动进行所有操作,除了页面加载速度缓慢之外,实际上没有任何问题。看来,除了添加媒体外,几乎管理员中的所有内容都需要4-5秒来处理-这出奇的快。

为了加快后端速度,我可以检查或执行哪些初始操作?(前端飞行)


3
您可以通过define( 'WP_HTTP_BLOCK_EXTERNAL', true );在中定义来阻止外部请求wp-config.php。WordPress管理员也Open Sans从Google 排队入队和其他字体。您也可以禁用它。它使加载管理部分更快一些。
罗伯特·

@Roberthue-似乎管理员中的许多页面都在向网络发出呼叫。我们想关闭所有这些功能。现在添加外部请求阻止以查看其反应。
2014年

1
@Roberthue-不知道为什么我以前从未使用过它-您知道第一次实现WP_HTTP_BLOCK_EXTERNAL的时间。我将其添加到了我的插件中(有一个我可以在各处传播的插件),并且有一种方法可以更快地加载所有页面。请将此作为答案以及其他任何无网格提示。
2014年

它已经在那里呆了几年了。不知道是什么时候添加的。当我发现本文
Robert hue

1
请回答。而且它已经存在了很长时间,可能(几乎)与HTTP API本身一样长。
拉斯特2014年

Answers:


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

外发数据

我只建议您使用SergejMüller的Snitch监视哪些数据试图离开您的安装。该插件可以禁止所有或仅特定连接,以及针对特定任务(例如不需要的cron作业和类似内容)的特定内部连接。如果您不想要完整的软件包,可以查看其源代码作为示例。谢尔盖通常写入非常慷慨的白色空间使用可读的代码。


1
您也可以通过插件调试对象查看有用的Informationen,以查看哪些查询,被触发的函数以及运行了多长时间。插件来自哪个函数。
bueltge 2015年

4

我建议安装此https://github.com/johnbillion/query-monitor并查看以下内容:内存使用率,HTTP请求,AJAX和慢查询。

可能是您的修订版,插件的AJAX,错误的查询等。

您将能够查看是否需要向服务器添加更多RAM,这通常可以解决许多加载缓慢的管理员问题,尤其是在管理员中有多个编辑器的情况下。

但是,除了这里的一些技巧之外,还没有一种解决方案可以解决所有问题,您还需要查看主题插件如何与管理员交互。


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

没问题。还添加了一些其他选项。
Bryan Willis
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.