Optimization

Tăng tốc WordPress bằng LiteSpeed và LSCache trên VPS

WordPress mặc định render mỗi request qua PHP rồi query database, nên TTFB thường dao động 400ms tới hơn 1s khi có tải. Cách bền vững nhất để hạ con số đó không phải nhồi thêm plugin cache PHP, mà chuyển việc cache xuống tầng web server. LiteSpeed sinh ra cho đúng bài toán này: server đọc trực tiếp cache từ RAM, bỏ qua toàn bộ vòng đời PHP cho các request đã được cache. Bài này đi qua stack thực tế trên một VPS: chọn OpenLiteSpeed hay LiteSpeed Enterprise, cài đặt, cấu hình plugin LiteSpeed Cache, ghép Redis cho object cache, tối ưu asset và tuning PHP, rồi đo TTFB để biết mình thật sự nhanh hơn hay chỉ tưởng vậy.

OpenLiteSpeed hay LiteSpeed Enterprise

Cả hai đều dùng chung engine LSCache, hỗ trợ HTTP/3, Brotli và GZIP. Điểm khác nằm ở chỗ triển khai và giấy phép, không phải ở việc "cái nào có cache".

  • OpenLiteSpeed: miễn phí hoàn toàn, giấy phép GPLv3, chạy bao nhiêu domain cũng được. LSCache đi kèm dưới dạng module tích hợp sẵn trong gói cài từ repo LiteSpeed. Đây là lựa chọn mặc định hợp lý cho phần lớn site WordPress một mình một VPS.
  • LiteSpeed Enterprise (LSWS): cần license, nhưng đọc thẳng file .htaccess như Apache, hỗ trợ ESI (Edge Side Includes) để cache từng mảnh trang riêng biệt, và có engine LSCache tinh chỉnh sâu hơn cho site động lớn.

Khác biệt thực dụng: OpenLiteSpeed cấu hình qua WebAdmin GUI (cổng 7080) và một số thay đổi vhost cần graceful restart, trong khi Enterprise reload cấu hình linh hoạt hơn và giữ được luồng làm việc kiểu Apache. Nếu bạn chạy một hoặc vài site WordPress, OpenLiteSpeed đủ tốt và không tốn phí. Chỉ cân nhắc Enterprise khi cần ESI, cần tương thích .htaccess của stack cũ, hoặc chạy shared hosting nhiều tenant. Tham khảo so sánh chính thức tại openlitespeed.orglitespeedtech.com.

Cài stack trên VPS

Trên Ubuntu 24.04, cài OpenLiteSpeed và LSPHP từ repo chính thức. Tính đến 2026, PHP 8.4 (LSPHP84) là bản khuyến nghị cho WordPress vì cân bằng tốc độ và tương thích plugin; PHP 8.5 đã stable nhưng chưa nên đưa lên production WordPress vội.

wget -O - https://repo.litespeed.sh | sudo bash
sudo apt update
sudo apt install openlitespeed lsphp84 lsphp84-common lsphp84-mysql \
  lsphp84-curl lsphp84-redis lsphp84-opcache -y

# Dat mat khau WebAdmin (cong 7080)
sudo /usr/local/lsws/admin/misc/admin_pass.sh
sudo systemctl enable lshttpd && sudo systemctl start lshttpd

Điểm mấu chốt hiệu năng là LiteSpeed dùng LSAPI để chạy PHP thay cho PHP-FPM. Theo benchmark của LiteSpeed, LSAPI xử lý request PHP nhanh hơn đáng kể và tốn ít CPU/RAM hơn PHP-FPM, kéo TTFB xuống ngay cả với request chưa được cache. Sau khi cài, trỏ document root của virtual host về thư mục WordPress và gán external app lsphp84 trong WebAdmin.

Plugin LiteSpeed Cache và page cache

Toàn bộ phần cache phía WordPress do plugin LiteSpeed Cache (LSCWP) điều khiển. Cài từ kho WordPress rồi bật page cache ở LiteSpeed Cache > Cache > [1] Cache. Khi server và plugin bắt tay đúng, response sẽ trả về header xác nhận đã phục vụ từ cache:

curl -sI https://your-site.com/ | grep -i x-litespeed-cache
# x-litespeed-cache: hit

Nếu không thấy header x-litespeed-cache, nghĩa là module LSCache chưa nạp ở tầng server, hoặc virtual host chưa bật cache. Đây là lỗi phổ biến nhất: plugin đã bật nhưng server không có module để phục vụ. Vài quy tắc thực dụng:

  • Đặt TTL public cache 1 tuần (604800s) cho trang tĩnh, ngắn hơn cho trang có nội dung thay đổi liên tục.
  • Bật Cache Logged-in Users chỉ khi hiểu rõ rủi ro lộ nội dung cá nhân hóa; mặc định nên tắt.
  • Loại trừ (do-not-cache) các đường dẫn động: /cart, /checkout, /my-account, REST endpoint thanh toán.
  • Bật purge theo tag để tránh xóa toàn bộ cache mỗi lần cập nhật một bài.

Cache tĩnh giải quyết được request ẩn danh. Nhưng dashboard admin, trang giỏ hàng, và mọi truy vấn động vẫn đập vào PHP và database. Đó là lúc cần object cache.

Object cache với Redis

Page cache lưu HTML hoàn chỉnh; object cache lưu kết quả truy vấn database và các đối tượng WordPress lặp lại (options, term, user meta) trong RAM. Với Redis, những truy vấn này không phải chạy lại trên MySQL ở mỗi lần load, đặc biệt hiệu quả cho trang động và khu admin. Cài Redis server và bật extension:

sudo apt install redis-server -y
sudo systemctl enable redis-server && sudo systemctl start redis-server

# Gioi han RAM va policy eviction cho Redis
sudo tee -a /etc/redis/redis.conf >/dev/null <<'EOF'
maxmemory 256mb
maxmemory-policy allkeys-lru
EOF
sudo systemctl restart redis-server

redis-cli ping   # -> PONG

Extension lsphp84-redis đã cài ở bước trên là bắt buộc; thiếu nó plugin không kết nối được. Trong WordPress vào LiteSpeed Cache > Cache > [6] Object, đặt Object Cache = ON, Method = Redis, Host = 127.0.0.1, Port = 6379. Từ 2026 plugin đã hỗ trợ username/password cho Redis nếu bạn bật auth. Xác minh ở Toolbox > [4] Object Cache, phải thấy trạng thái "Connected". Kiểm tra nhanh từ CLI khi có tải:

redis-cli info stats | grep keyspace
# keyspace_hits va keyspace_misses tang dan -> object cache dang chay

Tỷ lệ hit/miss cao nghĩa là phần lớn truy vấn được phục vụ từ RAM thay vì MySQL. Nếu misses gần bằng hits, xem lại maxmemory hoặc policy eviction.

Tối ưu ảnh, CSS và JS

Cache giải quyết TTFB, nhưng LCP và CLS phụ thuộc vào asset. Plugin LiteSpeed Cache gộp phần này ở tab Page Optimization, phần nặng chạy trên hạ tầng QUIC.cloud chứ không đốt CPU VPS của bạn:

  • Image Optimization: nén và sinh bản WebP/AVIF chạy nền, phục vụ định dạng mới cho trình duyệt hỗ trợ.
  • CSS/JS Minify: bật minify CSS và JS. Combine chỉ nên bật khi đã test kỹ vì HTTP/3 làm lợi ích gộp file giảm và dễ vỡ layout.
  • Critical CSS (CCSS) và UCSS: sinh CSS tối thiểu cho phần above-the-fold, hoãn phần còn lại, cải thiện Core Web Vitals.
  • LQIP và lazyload: placeholder chất lượng thấp và tải ảnh trễ theo viewport.

Nguyên tắc: bật từng mục một, đo lại, rồi mới bật mục kế. Gộp và defer JS là nơi dễ vỡ giao diện nhất, đừng bật hàng loạt rồi mới kiểm tra.

Tuning PHP và đo TTFB

Với LSAPI, tuning tập trung vào OPcache và số process con. Chỉnh trong file php.ini của lsphp84:

; /usr/local/lsws/lsphp84/etc/php/8.4/litespeed/php.ini
opcache.enable=1
opcache.memory_consumption=256
opcache.max_accelerated_files=20000
opcache.validate_timestamps=1
opcache.revalidate_freq=60
memory_limit=256M
max_execution_time=60

Trong WebAdmin, tăng Max ConnectionsMemory Soft/Hard Limit của external app lsphp theo RAM VPS. Sau mỗi thay đổi, đo TTFB bằng curl để có số thật thay vì cảm giác:

curl -o /dev/null -s -w "TTFB: %{time_starttransfer}s  Total: %{time_total}s\n" \
  https://your-site.com/

# Chay lan 2 de chac chan da hit cache:
for i in 1 2 3; do curl -o /dev/null -s -w "%{time_starttransfer}s\n" https://your-site.com/; done

Trang đã cache thường cho TTFB dưới 100ms từ cùng khu vực mạng, vì LiteSpeed trả thẳng HTML từ RAM. Nếu lần đầu chậm nhưng các lần sau nhanh, đó là hành vi đúng: request đầu warm cache, request sau đọc cache. Nếu mọi lần đều chậm, quay lại kiểm tra header x-litespeed-cache, khả năng cache chưa hit thật.

Tóm lược

Công thức tăng tốc WordPress trên VPS năm 2026 gọn lại thành: OpenLiteSpeed miễn phí làm nền, LSPHP84 qua LSAPI thay PHP-FPM để hạ TTFB gốc, LSCache lo page cache trả HTML từ RAM, Redis lo object cache cho truy vấn động và khu admin, QUIC.cloud lo ảnh và CSS/JS. Chỉ nâng lên LiteSpeed Enterprise khi thật sự cần ESI hoặc tương thích .htaccess. Quan trọng nhất: mỗi thay đổi phải kèm một phép đo. Xác nhận x-litespeed-cache: hit, theo dõi keyspace hits của Redis, và đo TTFB bằng curl trước và sau, không tin vào cảm giác. VPS với CPU và RAM riêng giúp cache và Redis có đủ chỗ thường trú trong bộ nhớ, đó là điều kiện để những con số này ổn định dưới tải.