问题描述

我们有许多 WP 站点在他们所在的服务器和互联网之间有一个代理。

WP 中的一些事情根本不起作用:

  • 仪表板上的 RSS 提要

  • 查找主题

  • 查找插件

  • 核心更新

我们手动完成所有操作,除了页面加载的 SLOWNESS 之外,确实没有问题。似乎管理员几乎所有的事情都需要 4-5 秒的时间来处理,除了添加媒体,这是惊人的快。

我可以检查或做些什么来加快 back-end? (front-end 苍蝇)

最佳解决方案

页脚中的 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 );
} );

Queries

加快帖子列表表格屏幕的另一件事是减少查询字段的数量。我注意到这个问题一段时间以来,由于我的 999 个帖子设置,这些屏幕加载太慢了。全 blog post here – 插件 as 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;
} );

Dashboard

每个用户都进入仪表板 – 这可能是管理界面中最慢的部分。您可以停用一些您不需要的小工具,而不是隐藏它们:

<?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 by Sergej Müller 来监控哪些数据试图离开您的安装。该插件允许抑制所有或仅仅特定的连接以及针对特定于针尖的内部连接,其目标是像不需要的 cron 作业和类似的东西。如果您不想要完整的包,您可以查看其来源的示例。 Sergej 通常使用大量的白色空间来编写非常易读的代码。

次佳解决方案

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

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

您将能够看到是否需要为您的服务器添加更多的 RAM,这通常会解决很多慢速加载的管理问题,特别是如果您在管理员中有多个编辑器。

但除了这里的一些技巧之外,还没有一个解决方案,您需要查看主题如何与管理员进行交互。

参考文献

注:本文内容整合自 Google/Baidu/Bing 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。