Bước 1: Đo lường trước khi tối ưu hóa
Hãy chạy trang web của bạn qua PageSpeed Insights (pagespeed.web.dev) và ghi lại bốn con số: LCP (Largest Contentful Paint, thời gian cho đến khi nội dung chính xuất hiện), INP (Interaction to Next Paint, khả năng phản hồi), CLS (Cumulative Layout Shift, độ ổn định trực quan) và tổng trọng lượng trang. Các ngưỡng Core Web Vitals của Google: LCP dưới 2,5 giây, INP dưới 200 ms, CLS dưới 0,1. Chúng ảnh hưởng trực tiếp đến thứ hạng của bạn từ năm 2021. Dưới các ngưỡng đó là «tốt»; giữa các ngưỡng và 4 giây/500 ms/0,25 là «cần cải thiện»; tệ hơn là «kém». Toàn bộ ý nghĩa của việc tối ưu hóa tốc độ WordPress là đưa ba con số này vào vùng xanh. Đừng tin vào điểm GTmetrix hay các đánh giá tổng hợp khác: chúng không tương ứng với các tín hiệu thực tế của Google.
Bước 2: Xác minh dịch vụ lưu trữ của bạn không phải là nút thắt cổ chai
Hãy kiểm tra TTFB (Time To First Byte) từ vị trí địa lý của đối tượng khán giả bằng WebPageTest. Nếu TTFB vượt quá 1 giây, dịch vụ lưu trữ của bạn là nút thắt cổ chai: không tối ưu hóa front-end nào có thể khắc phục được. Những thủ phạm phổ biến: lưu trữ chia sẻ giá rẻ với máy chủ quá tải, lưu trữ ở một châu lục khác với đối tượng khán giả của bạn, thiếu opcache PHP (bất kỳ phiên bản PHP 7+ nào cũng nên bật nó theo mặc định). Giải pháp rẻ nhất là chuyển sang một dịch vụ lưu trữ nhanh hơn ở cùng cấp gói. Với dưới 50 000 lượt xem/tháng, Hostinger Business với LiteSpeed Cache cho TTFB dưới 400 ms. Với lưu lượng truy cập nhiều hơn, Kinsta hoặc WP Engine ở cấp Google Cloud cao cấp cho TTFB dưới 300 ms một cách ổn định. Đổi dịch vụ lưu trữ tốn nhiều công sức hơn việc cài đặt một plugin, nhưng sự cải thiện thường rất đáng kể.
Bước 3: Bộ nhớ đệm trang là tối ưu hóa đơn lẻ lớn nhất
Theo mặc định, WordPress tạo mỗi trang từ PHP + MySQL trong mỗi yêu cầu. Bộ nhớ đệm trang lưu HTML đã được tạo và phục vụ nó trực tiếp cho các khách truy cập tiếp theo: thường nhanh hơn 10-20 lần. Trên các dịch vụ lưu trữ dựa trên LiteSpeed (Hostinger, hầu hết Bluehost, A2 Turbo, NameHero), hãy cài đặt LiteSpeed Cache (miễn phí): nó tích hợp với bộ nhớ đệm ở cấp máy chủ. Trên các dịch vụ lưu trữ Apache/Nginx, hãy cài đặt WP Rocket (59 $/năm): đây là plugin bộ nhớ đệm chất lượng cao nhất và đáng đồng tiền. Các lựa chọn miễn phí thay thế (W3 Total Cache, WP Super Cache) hoạt động nhưng đòi hỏi nhiều cấu hình hơn. Sau khi kích hoạt bộ nhớ đệm trang, hãy kiểm thử lại trên PageSpeed Insights: bạn sẽ thấy TTFB giảm mạnh.
Bước 4: Tối ưu hóa hình ảnh đứng thứ hai
Hình ảnh thường chiếm 60-80 % trọng lượng của một trang WordPress. Hai chiến thắng cần nắm bắt: (1) Nén: mỗi hình ảnh nên được nén trước khi tải lên. Hãy dùng Trình nén hình ảnh của chúng tôi hoặc cài đặt ShortPixel/Smush để tự động nén khi tải lên. Mục tiêu: hình ảnh tiêu đề dưới 200 KB, hình ảnh nội dung dưới 100 KB. (2) Định dạng hiện đại: phục vụ WebP (hoặc AVIF) thay vì JPG/PNG. WebP nhỏ hơn 25-35 % với cùng chất lượng. ShortPixel và Smush Pro tự động chuyển đổi; ngoài ra, tính năng tối ưu hóa hình ảnh của Cloudflare viết lại hình ảnh ngay khi tải. (3) Tải chậm: các hình ảnh dưới nếp gấp chỉ nên được tải khi cuộn tới chúng. WordPress 5.5+ tự động thêm loading='lazy'; hãy xác minh nó hoạt động bằng cách xem mã nguồn. (4) Thuộc tính chiều rộng: hãy luôn đặt width/height rõ ràng trên hình ảnh để tránh CLS.
Bước 5: Rút gọn CSS/JS và kiểm toán gói
Hầu hết các plugin bộ nhớ đệm (WP Rocket, LiteSpeed Cache) đều bao gồm tính năng rút gọn CSS/JS: hãy kích hoạt nó. Chiến thắng lớn nhất là trì hoãn hoặc loại bỏ các script không được sử dụng. Hãy chạy Chrome DevTools → tab Coverage trên trang chủ của bạn; nó cho thấy những byte CSS và JS nào thực sự được sử dụng. Kết quả điển hình: 50-80 % CSS không được sử dụng, 30-60 % JS không được sử dụng. Giải pháp: (a) dùng một theme nhẹ hơn (GeneratePress hoặc Kadence gửi dưới 30 KB CSS), (b) vô hiệu hóa các plugin không sử dụng (thường là nguồn gốc của các script không được sử dụng), (c) dùng một plugin như Asset CleanUp để vô hiệu hóa script trên các trang không cần chúng (ví dụ: Contact Form 7 được tải ở khắp nơi theo mặc định ngay cả khi bạn chỉ dùng nó ở /contact).
Bước 6: Kiểm toán plugin: tìm những plugin chậm
Mỗi plugin WordPress đang hoạt động đều chạy trong mỗi lần tải trang, có khả năng thêm các truy vấn, JavaScript và CSS. Hầu hết các trang web chậm có hơn 30-50 plugin đang hoạt động, một nửa trong số đó không còn được dùng. Hãy dùng Query Monitor (miễn phí) để xem plugin nào thực hiện nhiều truy vấn cơ sở dữ liệu nhất. Hãy dùng cấp miễn phí của New Relic hoặc APM của Kinsta để xem các hàm plugin nào mất nhiều thời gian nhất. Những thủ phạm hàng đầu trong lịch sử: Jetpack (làm nhiều thứ, tất cả trong mỗi yêu cầu), các plugin sao lưu cồng kềnh chạy trong các đợt tăng đột biến lưu lượng truy cập, các plugin chia sẻ mạng xã hội tải CSS/JS của chúng ngay cả trên các trang không có nút chia sẻ, các plugin bảo mật thực hiện quét tệp theo thời gian thực. Hãy vô hiệu hóa một plugin, kiểm thử lại hiệu suất và quyết định xem tính năng đó có đáng giá chi phí không.
Bước 7: Tối ưu hóa cơ sở dữ liệu
WordPress tích tụ rác trong cơ sở dữ liệu theo thời gian: các phiên bản sửa đổi bài viết, transient đã hết hạn, bình luận spam, metadata mồ côi. Hãy cài đặt WP-Optimize (miễn phí) và chạy một lần dọn dẹp cơ sở dữ liệu. Bảo trì hàng tháng hợp lý: xóa các phiên bản sửa đổi cũ hơn 60 ngày (giữ các phiên bản gần đây để an toàn), transient đã hết hạn, hàng đợi spam. Đối với các trang web lưu lượng truy cập cao, chiến thắng cơ sở dữ liệu lớn nhất là bộ nhớ đệm đối tượng: Redis hoặc Memcached lưu trong bộ nhớ kết quả của các truy vấn MySQL tốn kém, tránh lặp lại công việc. Hầu hết các dịch vụ lưu trữ WordPress được quản lý đều bao gồm Redis ở các cấp cao hơn; trên lưu trữ chia sẻ cơ bản, điều này không có sẵn.
Bước 8: CDN cho đối tượng khán giả toàn cầu
Một CDN (Mạng phân phối nội dung) lưu trong bộ nhớ đệm các tài nguyên tĩnh của bạn (hình ảnh, CSS, JS) ở các vị trí edge gần khách truy cập của bạn. Đối với một đối tượng khán giả chỉ ở Hoa Kỳ được lưu trữ tại Hoa Kỳ, một CDN mang lại cải thiện khiêm tốn. Đối với một đối tượng khán giả toàn cầu, một CDN là thiết yếu: nó giảm độ trễ của tài nguyên từ 200-500 ms xuống 20-50 ms. Cấp miễn phí của Cloudflare đáp ứng hầu hết các nhu cầu; BunnyCDN ở mức 0,01-0,05 $/GB là một bản nâng cấp trả phí với hiệu suất xuất sắc. Đối với hình ảnh nói riêng, Cloudflare Images hoặc Bunny Image Optimizer có thể thay đổi kích thước và chuyển đổi định dạng ngay khi tải.
Bước 9: Đo lường lại và lặp lại
Sau mỗi thay đổi quan trọng, hãy chạy lại PageSpeed Insights. Mục tiêu là tiến bộ từng bước: hầu hết các trang web không đi từ «kém» sang «tốt» chỉ với một thay đổi. Sau một lượt tối ưu hóa đầy đủ, kết quả điển hình: một cửa hàng WooCommerce trên lưu trữ chia sẻ đi từ LCP 4-6 giây xuống LCP 1,5-2,5 giây. Một blog nội dung trên lưu trữ được quản lý đi từ LCP 2-3 giây xuống LCP 0,8-1,5 giây. Nếu bạn vẫn ở trên 3 giây LCP sau tất cả những điều trên, nút thắt cổ chai có lẽ là theme của bạn: hãy chuyển sang một theme nhẹ hơn (GeneratePress, Kadence hoặc Astra) trước khi tiếp tục tối ưu hóa.