无需插件优化 WordPress 速度(纯代码指南)

发布于 | 作者
6 分钟阅读

如果您正在阅读本文,您可能已经厌倦了 标准的 WordPress 性能建议。通常的套路——安装 WP Rocket、添加图片优化插件、再加入一个资源管理器——往往会导致一个悖论: 您安装插件是为了加速网站,但插件本身却增加了数据库臃肿、后台计划任务以及它们自己的 CSS/JS 负载。

事实是,WordPress 不需要 15 个性能插件就能在不到一秒的时间内加载完成。真正的速度优化发生在底层——服务器、数据库和核心代码层面。

在本指南中,我们将完全绕过插件生态系统。我们将通过服务器端配置、 wp-config.php 调整和精准的 functions.php 代码片段来优化 WordPress。


1. 服务器端基础(无需 PHP)

在触碰任何一行 WordPress 代码之前,您的服务器环境必须经过深度优化。弱势的服务器无法通过前端缓存来修复。

升级到 PHP 8.1+

WordPress 运行在 PHP 之上。从 PHP 7.4 升级到 PHP 8.1 或 8.2 可以使执行时间减少 20-30%,并显著降低内存消耗。 操作: 在您的 cPanel、Plesk 中更改,或者如果您管理自己的 VPS,则通过 CLI 进行更改。

启用服务器级压缩(Brotli 优于 Gzip)

虽然 Gzip 是标准配置,但 Brotli (由 Google 开发)在相同的 CPU 成本下,为文本文件(HTML、CSS、JS)提供了约 15-20% 的更好压缩比。 操作(Nginx): 确保您的 nginx.conf 已启用 Brotli:

brotli on;
brotli_comp_level 6;
brotli_types text/plain text/css application/javascript application/json image/svg+xml;

实现 FastCGI 缓存 (Nginx) 或 LiteSpeed 缓存

与其使用基于 PHP 的缓存插件(该插件仍需 WordPress 部分加载才能提供缓存),不如在 Web 服务器级别进行缓存。Nginx FastCGI 缓存将生成的 HTML 存储在内存或磁盘中并直接提供服务,从而为匿名访问者完全绕过 PHP 和 MySQL。


2. 通过以下方式进行加固和精简 wp-config.php

该 wp-config.php 文件是您的控制室。默认情况下,WordPress 允许某些会随时间推移导致数据库臃肿的行为。

在以下代码之前添加这些片段 /* That's all, stop editing! Happy publishing. */ 行。

限制文章修订版本

默认情况下,WordPress 会存储文章的无限修订版本。一篇文章更新 50 次,就会在您的 wp_posts 数据库表中产生 50 个副本,从而极大地拖慢数据库查询速度。

// Keep only the last 3 revisions
define( 'WP_POST_REVISIONS', 3 );

优化自动保存间隔

WordPress 每 60 秒自动保存一次。如果您有多个编辑人员在工作,这会给数据库带来沉重负担。请降低其频率。

// Change autosave from 60 seconds to 5 minutes
define( 'AUTOSAVE_INTERVAL', 300 );

更快地清空回收站

已删除的文章和评论会在数据库中保留 30 天。减少此时间以保持数据库精简。

// Empty trash every 7 days
define( 'EMPTY_TRASH_DAYS', 7 );

3. “反臃肿” functions.php 主代码片段

WordPress 核心默认会在您的  和 

 中注入大量遗留支持脚本、发现链接和内联样式。

为了比竞争对手获得最大的信息增益,我们不仅会告诉您“使用精简插件”。以下是精确的代码,可以从根本上移除最常见的 WordPress 臃肿内容。

注意:将其添加到您的子主题的 functions.php 或 mu-plugin 中。

/**
 * The Ultimate WordPress Debloat Snippet
 */
add_action('init', function() {
    // 1. Remove RSD, XMLRPC, and WLW links
    remove_action('wp_head', 'rsd_link');
    remove_action('wp_head', 'wlwmanifest_link');
    add_filter('xmlrpc_enabled', '__return_false');

    // 2. Remove WordPress version footprint (Security & Speed)
    remove_action('wp_head', 'wp_generator');

    // 3. Remove Shortlinks and REST API links from header
    remove_action('wp_head', 'wp_shortlink_wp_head');
    remove_action('wp_head', 'rest_output_link_wp_head');

    // 4. Disable native Emojis (Saves 1 JS and 1 CSS HTTP Request)
    remove_action('wp_head', 'print_emoji_detection_script', 7);
    remove_action('wp_print_styles', 'print_emoji_styles');
    remove_action('admin_print_scripts', 'print_emoji_detection_script');
    remove_action('admin_print_styles', 'print_emoji_styles');
    remove_filter('the_content_feed', 'wp_staticize_emoji');
    remove_filter('comment_text_rss', 'wp_staticize_emoji');
    remove_filter('wp_mail', 'wp_staticize_emoji_for_email');

    // 5. Disable oEmbeds (If you don't embed external URLs automatically)
    remove_action('wp_head', 'wp_oembed_add_discovery_links');
    remove_action('wp_head', 'wp_oembed_add_host_js');
    add_action('wp_footer', function() { wp_deregister_script('wp-embed'); });
});

/**
 * 6. Remove Global Styles (WP 5.9+ Inline CSS Bloat)
 */
add_action('wp_enqueue_scripts', function() {
    wp_dequeue_style('global-styles');
    wp_dequeue_style('classic-theme-styles');
}, 100);

/**
 * 7. Remove jQuery Migrate (If using modern themes/plugins)
 */
add_action('wp_default_scripts', function($scripts) {
    if (!is_admin() && isset($scripts->registered['jquery'])) {
        $script = $scripts->registered['jquery'];
        if ($script->deps) {
            $script->deps = array_diff($script->deps, ['jquery-migrate']);
        }
    }
});

/**
 * 8. Throttle the Heartbeat API
 * Prevents high CPU usage when leaving the WP Admin open
 */
add_filter('heartbeat_settings', function($settings) {
    $settings['interval'] = 60; // Throttle to 60 seconds
    return $settings;
});

我们刚刚实现了什么?

通过添加上述代码,您立即消除了多达 5-8 个不必要的 HTTP 请求 并从每次页面加载中移除了数十行内联 CSS/JS——所有这些都无需安装任何插件。


4. 媒体优化(硬核方式)

像 Smush 或 Imagify 这样的插件很方便,但它们在您的 PHP 服务器上运行图像处理,消耗 CPU 资源。

手动 WebP/AVIF 转换

在将任何图像上传到 WordPress 之前,请通过外部无损压缩工具运行它,例如 Squoosh.app (由 Google 提供)或 TinyPNG。更好的是,在上传之前在本地将它们转换为 .webp 或 .avif 格式。

利用原生延迟加载

自 WordPress 5.5 起,内置了原生延迟加载功能。WordPress 会自动将 loading="lazy" 添加到您的图像中。您不需要基于 JavaScript 的延迟加载插件。但是,请确保您的“首屏”图像(如徽标或主图)没有此属性,因为它会延迟最大内容渲染时间 (LCP)。

您可以通过以下方式移除页面上第一张图像的延迟加载 functions.php:

add_filter( 'wp_get_attachment_image_attributes', function( $attr, $attachment, $size ) {
    static $is_first_image = true;
    if ( $is_first_image ) {
        $attr['loading'] = 'eager'; // Force immediate load for LCP
        $is_first_image = false;
    }
    return $attr;
}, 10, 3 );

5. 通过 phpMyAdmin 进行数据库碎片整理

优化插件通常具有“清理数据库”按钮。您可以在数据库级别原生执行此操作。

  1. 登录您的托管面板并打开 phpMyAdmin.
  2. 选择您的 WordPress 数据库。
  3. 滚动到底部,勾选 全选.
  4. 在“选中项”下拉菜单中,选择 优化表.

MySQL 将重建表索引并回收未使用的空间。每月手动执行一次此操作。


结论

在不使用插件的情况下优化 WordPress 不仅仅是为了节省高级订阅费用。这是一种 减少技术债务的哲学。你少安装一个插件,就少了一个需要修补的安全漏洞,少了一个需要清理的数据库表,也少了一个服务器需要执行的 PHP 脚本。

将工作负载转移到服务器(PHP 8.1+,Nginx FastCGI),在你的 wp-config.php中加强纪律,并使用你的 functions.php切除核心臃肿部分。你的首字节时间 (TTFB) 和核心网页指标 (Core Web Vitals) 将反映出这种差异。

Ajay Malik

Ajay Malik 是一位拥有 8 年以上经验的 WordPress 开发人员和精英自由职业者。