Cách tối ưu hóa WordPress để tăng tốc không cần Plugin (Hướng dẫn chỉ dùng mã nguồn)

Được xuất bản vào | Bởi
6 phút đọc

Nếu bạn đang đọc bài này, có lẽ bạn đã quá mệt mỏi với lời khuyên về hiệu suất WordPress tiêu chuẩn. Quy trình thông thường—cài đặt WP Rocket, thêm plugin tối ưu hóa hình ảnh và thêm trình quản lý tài nguyên—thường dẫn đến một nghịch lý: bạn cài đặt plugin để tăng tốc trang web, nhưng chính các plugin đó lại làm tăng sự cồng kềnh cho cơ sở dữ liệu, các tác vụ cron chạy ngầm và tải thêm CSS/JS của riêng chúng.

Sự thật là, WordPress không cần 15 plugin hiệu suất để tải trong vòng chưa đầy một giây. Tối ưu hóa tốc độ thực sự diễn ra ở cấp độ nền tảng—máy chủ, cơ sở dữ liệu và mã nguồn cốt lõi.

Trong hướng dẫn này, chúng ta sẽ bỏ qua hoàn toàn hệ sinh thái plugin. Chúng ta sẽ tối ưu hóa WordPress bằng cách sử dụng các cấu hình phía máy chủ, wp-config.php điều chỉnh và các functions.php đoạn mã tinh gọn.


1. Nền tảng phía máy chủ (Không yêu cầu PHP)

Trước khi chạm vào một dòng mã WordPress nào, môi trường máy chủ của bạn phải được tối ưu hóa mạnh mẽ. Một máy chủ yếu không thể được khắc phục bằng bộ nhớ đệm phía người dùng.

Nâng cấp lên PHP 8.1+

WordPress chạy trên PHP. Chuyển từ PHP 7.4 sang PHP 8.1 hoặc 8.2 có thể giúp giảm 20-30% thời gian thực thi và giảm đáng kể mức tiêu thụ bộ nhớ. Hành động: Thay đổi điều này trong cPanel, Plesk hoặc qua CLI nếu bạn tự quản lý VPS của mình.

Bật nén cấp máy chủ (Brotli thay vì Gzip)

Mặc dù Gzip là tiêu chuẩn, Brotli (do Google phát triển) cung cấp tỷ lệ nén tốt hơn khoảng 15-20% cho các tệp văn bản (HTML, CSS, JS) với cùng mức tiêu thụ CPU. Hành động (Nginx): Đảm bảo rằng nginx.conf của bạn đã bật Brotli:

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

Triển khai FastCGI Caching (Nginx) hoặc LiteSpeed Cache

Thay vì sử dụng plugin tạo bộ nhớ đệm dựa trên PHP (vốn vẫn yêu cầu WordPress tải một phần để phục vụ bộ nhớ đệm), hãy tạo bộ nhớ đệm ở cấp máy chủ web. Nginx FastCGI caching lưu trữ HTML đã tạo trong RAM hoặc trên ổ đĩa và phục vụ trực tiếp, bỏ qua hoàn toàn PHP và MySQL đối với khách truy cập ẩn danh.


2. Làm cứng và tinh gọn thông qua wp-config.php

Tệp wp-config.php là phòng điều khiển của bạn. Theo mặc định, WordPress cho phép một số hành vi làm phình cơ sở dữ liệu của bạn theo thời gian.

Thêm các đoạn mã này ngay trước dòng /* That's all, stop editing! Happy publishing. */ line.

Giới hạn bản sửa đổi bài viết

Theo mặc định, WordPress lưu trữ vô số bản sửa đổi bài viết của bạn. Một bài viết được cập nhật 50 lần sẽ có 50 bản sao trong bảng wp_posts cơ sở dữ liệu của bạn, làm chậm đáng kể các truy vấn cơ sở dữ liệu.

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

Tối ưu hóa khoảng thời gian tự động lưu

WordPress tự động lưu sau mỗi 60 giây. Nếu bạn có nhiều biên tập viên làm việc, điều này sẽ gây áp lực lên cơ sở dữ liệu. Hãy làm chậm nó lại.

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

Dọn sạch thùng rác nhanh hơn

Các bài viết và bình luận đã xóa nằm trong cơ sở dữ liệu trong 30 ngày. Hãy giảm thời gian này để giữ cho cơ sở dữ liệu gọn nhẹ.

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

3. Đoạn mã chính functions.php chống phình to

Cốt lõi của WordPress mặc định chèn một lượng lớn các tập lệnh hỗ trợ cũ, liên kết khám phá và kiểu nội tuyến vào  và 

 của bạn.

Để đạt được lợi ích thông tin tối đa so với đối thủ cạnh tranh, chúng tôi sẽ không chỉ bảo bạn "sử dụng plugin gỡ bỏ bloat". Đây là mã chính xác để loại bỏ một cách phẫu thuật các phần phình to phổ biến nhất của WordPress.

Lưu ý: Thêm mã này vào functions.php của Child Theme hoặc một 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;
});

Chúng ta vừa đạt được điều gì?

Bằng cách thêm mã trên, bạn đã loại bỏ ngay lập tức tới 5-8 yêu cầu HTTP không cần thiết và loại bỏ hàng chục dòng CSS/JS nội tuyến khỏi mỗi lần tải trang—tất cả mà không cần cài đặt một plugin nào.


4. Tối ưu hóa phương tiện (Cách khó)

Các plugin như Smush hoặc Imagify rất tiện lợi, nhưng chúng chạy xử lý hình ảnh trên máy chủ PHP của bạn, tiêu tốn tài nguyên CPU.

Chuyển đổi WebP/AVIF thủ công

Trước khi tải bất kỳ hình ảnh nào lên WordPress, hãy chạy nó qua một trình nén không mất dữ liệu bên ngoài như Squoosh.app (của Google) hoặc TinyPNG. Tốt hơn nữa, hãy chuyển đổi chúng sang .webp hoặc .avif định dạng cục bộ trước khi tải lên.

Tận dụng tính năng Lazy Loading gốc

Kể từ WordPress 5.5, tính năng lazy loading gốc đã được tích hợp sẵn. WordPress tự động thêm loading="lazy" vào hình ảnh của bạn. Bạn không cần plugin lazy loading dựa trên JavaScript. Tuy nhiên, hãy đảm bảo các hình ảnh "phía trên nếp gấp" (như logo hoặc hình ảnh hero) KHÔNG có thuộc tính này, vì nó sẽ làm chậm Largest Contentful Paint (LCP).

Bạn có thể xóa lazy loading cho hình ảnh đầu tiên trên trang thông qua 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. Chống phân mảnh cơ sở dữ liệu thông qua phpMyAdmin

Các plugin tối ưu hóa thường có nút "Dọn dẹp cơ sở dữ liệu". Bạn có thể thực hiện việc này một cách tự nhiên ở cấp cơ sở dữ liệu.

  1. Đăng nhập vào bảng điều khiển lưu trữ của bạn và mở phpMyAdmin.
  2. Chọn cơ sở dữ liệu WordPress của bạn.
  3. Cuộn xuống dưới cùng, chọn Chọn tất cả.
  4. Trong menu thả xuống "Với lựa chọn:", hãy chọn Tối ưu hóa bảng.

MySQL sẽ xây dựng lại các chỉ mục bảng và thu hồi dung lượng không sử dụng. Hãy thực hiện việc này thủ công mỗi tháng một lần.


Phán quyết

Tối ưu hóa WordPress mà không cần plugin không chỉ là tiết kiệm tiền cho các gói đăng ký cao cấp. Đó là một triết lý về giảm nợ kỹ thuật. Mỗi plugin bạn không cài đặt là một lỗ hổng bảo mật mà bạn không cần phải vá, một bảng cơ sở dữ liệu bạn không cần phải dọn dẹp và một tập lệnh PHP mà máy chủ của bạn không cần phải thực thi.

Chuyển khối lượng công việc sang máy chủ (PHP 8.1+, Nginx FastCGI), thực thi kỷ luật trong wp-config.phpcủa bạn, và loại bỏ phần lõi cồng kềnh bằng cách sử dụng functions.phpcủa bạn. Thời gian phản hồi byte đầu tiên (TTFB) và các chỉ số Core Web Vitals của bạn sẽ phản ánh sự khác biệt.

Chia sẻ bài viết này

Ajay Malik

Ajay Malik là một nhà phát triển WordPress và Elite Freelancer với hơn 8 năm kinh nghiệm.