FAQ nhanh về LiteSpeed Cache
LiteSpeed Cache là gì và tại sao nên dùng cho WordPress?
LiteSpeed Cache (LSCache) là giải pháp cache tích hợp sẵn ở tầng server của LiteSpeed/OpenLiteSpeed, hoạt động cùng plugin WordPress LiteSpeed Cache. Khác với plugin cache thông thường chỉ xử lý ở tầng PHP, LSCache cache ngay tại server level, bỏ qua hoàn toàn PHP và database, giúp tăng tốc độ tải trang gấp 5-10 lần.
LSCache khác gì WP Rocket hay W3 Total Cache?
WP Rocket và W3 Total Cache hoạt động ở tầng plugin (PHP), mỗi request vẫn phải qua PHP process. LSCache cache tại server level bằng .htaccess rules, request được phục vụ trực tiếp từ memory mà không chạm vào PHP. Kết quả: TTFB giảm từ 400-800ms xuống 30-80ms, gấp 5-10x nhanh hơn plugin cache thông thường.
Có cần trả phí để dùng LiteSpeed Cache không?
Plugin LiteSpeed Cache trên WordPress.org hoàn toàn miễn phí. OpenLiteSpeed cũng miễn phí. Chỉ LiteSpeed Enterprise (bắt đầu từ $10/tháng) mới trả phí nhưng có thêm features như ESI advanced và crawl durability. Với hầu hết blog và site nhỏ, OpenLiteSpeed + LSCache miễn phí là quá đủ.
LSCache có hoạt động với WooCommerce không?
Có, và rất tốt. LSCache có chế độ WooCommerce riêng, tự động exclude các trang cart, checkout, account khỏi cache, đồng thời cache các trang shop và sản phẩm. Từ bản 4.0+, LSCache hỗ trợ ESI blocks cho giỏ hàng và widget, cho phép cache toàn bộ trang trong khi vẫn hiển thị nội dung dynamic.
Tốc độ cải thiện bao nhiêu khi dùng LSCache?
Trong thử nghiệm của tôi trên VPS 2 vCPU/4GB RAM: TTFB giảm từ 520ms xuống 42ms (giảm 92%), Pagespeed Insights điểm mobile tăng từ 48 lên 92, Time to Interactive giảm từ 4.8s xuống 1.2s. Server có thể handle khoảng 180 RPS thay vì 15-20 RPS khi không có cache.
—
LiteSpeed Cache hoạt động như thế nào
Để hiểu tại sao LiteSpeed Cache mạnh hơn plugin cache thông thường, cần nắm khác biệt cơ bản giữa cache ở tầng server và cache ở tầng application.
Cache ở tầng server vs tầng plugin
Plugin cache như WP Rocket, W3 Total Cache, hay WP Super Cache đều hoạt động theo cùng một pattern: request đến web server, server chuyển request cho PHP-FPM, PHP khởi động WordPress, WordPress chạy qua các hooks và filters, plugin cache intercept kết quả HTML cuối cùng và lưu lại. Request tiếp theo vẫn đi qua PHP process nhưng plugin trả kết quả cached nhanh hơn thay vì query database.
LiteSpeed Cache làm khác hoàn toàn. Khi một request đến, LiteSpeed web server kiểm tra trong cache storage (thường là shared memory hoặc disk). Nếu tìm thấy cached copy, server trả kết quả ngay lập tức mà không bao giờ chạm vào PHP hay WordPress. Toàn bộ quá trình xử lý WordPress — bootstrap, query database, render template, execute plugins — bị bỏ qua hoàn toàn.
Điều này có nghĩa là:
- TTFB (Time to First Byte): Giảm từ 300-800ms (typical WordPress) xuống 20-80ms, vì server chỉ cần đọc từ cache và gửi về
- CPU usage: Giảm 70-90%, vì PHP process gần như không phải hoạt động
- Memory: Giảm đáng kể, vì không cần load WordPress core + plugins vào RAM cho mỗi request
- Concurrent connections: Server có thể handle gấp 5-10x request so với không có cache, vì mỗi request chỉ tốn microseconds thay vì hundreds of milliseconds
Cơ chế hoạt động chi tiết
LSCache hoạt động qua sự phối hợp giữa 3 thành phần:
- LiteSpeed Web Server (server-level): Quản lý cache storage, serve cached pages, honor cache headers. Server đọc cache headers (xCache-control, cache-control) từ response và quyết định cache nội dung nào, trong bao lâu.
- LiteSpeed Cache Plugin (WordPress-level): Thiết lập cache rules, generate cache headers, quản lý purge logic, integrate với WordPress hooks để invalidate cache khi nội dung thay đổi.
- .htaccess rules: Plugin tự động thêm rewrite rules vào .htaccess, hướng dẫn server cách xử lý cache. Đây là lý do LSCache chỉ hoạt động trên LiteSpeed server (hoặc server có LSAPI module).
Khi trang được cache lần đầu (cache miss), trải nghiệm giống hệt trang bình thường. Request đi qua PHP, WordPress xử lý bình thường, plugin thêm cache headers vào response. Server lưu lại response kèm cache metadata. Từ request thứ 2 trở đi (cache hit), server trả kết quả trực tiếp từ cache — nhanh hơn gấp nhiều lần.
Một điểm quan trọng mà nhiều người bỏ qua: LSCache hỗ trợ cache vary — cache khác nhau dựa trên điều kiện (logged-in user, mobile device, cookie, country). Điều này cho phép serve đúng nội dung cho đúng user mà không phải disable cache hoàn toàn.
So sánh với các giải pháp cache khác
Sau 2 năm dùng thử nhiều giải pháp cache trên WordPress, đây là so sánh thực tế của tôi:
| Tiêu chí | LSCache | WP Rocket | W3 Total Cache | WP Super Cache |
|---|---|---|---|---|
| Cache level | Server-level | Plugin/PHP-level | Plugin/PHP-level | Plugin/PHP-level |
| TTFB (trung bình) | 30-80ms | 150-300ms | 120-250ms | 180-350ms |
| CPU khi serve cached | Gần như 0 | Vẫn cần PHP | Vẫn cần PHP | Vẫn cần PHP |
| Giá | Miễn phí | $59/năm | Miễn phí (premium có phí) | Miễn phí |
| Yêu cầu server | LiteSpeed/OLS | Mọi server | Mọi server | Mọi server |
| Image optimization | Tích hợp (QUIC.cloud) | Cơ bản | Không | Không |
| CDN tích hợp | QUIC.cloud | Cloudflare, CDN khác | CDN generic | Không |
| ESI support | Có | Không | Không | Không |
| Crawler/Warmup | Tích hợp | Không | Không | Không |
WP Rocket là plugin cache tốt nhất ở tầng PHP, nhưng vẫn bị giới hạn bởi chính PHP. Nếu bạn đang chạy OpenLiteSpeed, LSCache miễn phí và nhanh hơn WP Rocket đáng kể. Nếu chạy Nginx hay Apache thông thường, WP Rocket là lựa chọn tốt dù phải trả phí.
W3 Total Cache có nhiều options nhưng giao diện phức tạp, dễ cấu hình sai. WP Super Cache đơn giản nhưng thiếu features — chỉ phù hợp cho blog nhỏ không cần tối ưu nhiều.
Cài đặt và kích hoạt LSCache cho WordPress
Yêu cầu
Trước khi cài plugin, đảm bảo server đáp ứng các điều kiện sau:
- Web server: OpenLiteSpeed 1.7+ hoặc LiteSpeed Enterprise 5.3+ (xem hướng dẫn cài đặt tại bài viết cài đặt OpenLiteSpeed + WordPress trên Ubuntu VPS)
- PHP: 7.4+, khuyến nghị 8.1+ với LSAPI extension
- LiteSpeed Cache module: Đã enable trong server config (mặc định enabled trên OLS)
- .htaccess: WordPress có quyền ghi .htaccess
Kiểm tra LSCache module đã enable:
# Trên OpenLiteSpeed
curl -I https://yoursite.com | grep -i x-litespeed
Nếu thấy header X-Litespeed-Cache: miss hoặc hit, LSCache đang hoạt động ở server level.
Cài đặt plugin
Cài qua WP-CLI cho nhanh:
sudo -u www-data wp plugin install litespeed-cache --activate \
--path=/var/www/yoursite.com/public_html
Hoặc cài qua WordPress Admin > Plugins > Add New, tìm “LiteSpeed Cache” và activate.
Sau khi activate, plugin tự động:
- Thêm cache rules vào .htaccess
- Thiết lập cache default settings
- Bật cache cho trang chủ và các post/page
- Exclude trang admin và logged-in users khỏi cache
Kiểm tra cache đang hoạt động bằng cách mở website ở incognito tab, xem response headers:
curl -I https://yoursite.com
# Lần đầu (miss):
# X-Litespeed-Cache: miss
# Refresh lại (hit):
# X-Litespeed-Cache: hit
Nếu thấy hit ở lần request thứ 2, LSCache đang hoạt động đúng. Nếu vẫn luôn miss, kiểm tra .htaccess permissions và LiteSpeed Cache module enable.
Cấu hình từng tab chi tiết
Vào WordPress Admin > LiteSpeed Cache > Settings. Giao diện plugin chia thành nhiều tab, mỗi tab quản lý một nhóm tính năng riêng. Dưới đây là cấu hình tôi dùng và khuyến nghị sau khi thử nghiệm nhiều lần trên các site khác nhau.
Tab General
Tab General chứa các settings nền tảng quyết định LSCache hoạt động hay không.
Enable LiteSpeed Cache: ON. Đây là switch chính, tắt thì mọi thứ bên dưới không có tác dụng.
Default Public Cache TTL: 604800 (7 ngày). Đây là thời gian cache mặc định cho public pages. 7 ngày là hợp lý cho blog content ít thay đổi. Nếu site update thường xuyên, giảm xuống 86400 (1 ngày). Cache sẽ tự động purge khi có content mới (post mới, edit post, comment mới), nên TTL dài không ảnh hưởng đến freshness.
Default Private Cache TTL: 1800 (30 phút). Cho logged-in users. 30 phút là đủ — không cần dài vì nội dung private cần update nhanh hơn.
Enable Guest Mode: ON. Rất quan trọng cho site có lượng truy cập lớn. Guest Mode tạo cached version cho non-logged-in visitors, phục vụ cùng một bản cache cho hàng ngàn visitors. Giảm đáng kể load server.
Guest Mode Vary: Bật nếu theme hiển thị nội dung khác nhau cho logged-in vs guest. Phần lớn site nên để OFF để maximize cache hit rate.
Purge on Upgrade: ON. Tự động purge cache khi update plugin/theme/core. Tránh trường hợp serve nội dung cũ sau khi update.
Tab Cache
Tab Cache quyết định cache cái gì và trong bao lâu.
Cache Logged-in Users: OFF. Không bao giờ cache cho logged-in users nếu site có user accounts. Nếu bật, users có thể thấy nội dung của nhau — vấn đề nghiêm trọng về bảo mật và UX.
Cache Commenters: OFF. Tương tự, không cache cho users vừa comment (WordPress set cookie cho commenters). Nếu bật, commenters có thể không thấy comment của mình hiển thị.
Cache REST API: OFF. REST API trả dữ liệu dynamic, không nên cache. Ngoại trừ một số endpoints public readonly, nhưng cần test kỹ trước khi enable.
Cache Login Page: OFF. Không có lý do gì cache trang login.
Cache PHP: OFF. Không bao giờ cache PHP files trực tiếp.
Cache Mobile: Tùy thuộc vào site. Nếu dùng responsive theme (phần lớn theme hiện đại), để OFF — một bản cache serve cho mọi device. Nếu có separate mobile theme hoặc mobile-specific content, bật lên và chọn “Use separate cached copies for mobile view”.
Cache Object: ON nếu có Redis/Memcached. Object cache lưu kết quả database queries, giảm load DB đáng kể. Nếu không có Redis/Memcached, để OFF vì file-based object cache đôi khi chậm hơn không cache.
Cache Browser: ON. Browser cache set cache-control headers cho static assets (CSS, JS, images), giúp browser không phải re-download các file này. TTL 31536000 (1 năm) cho assets có version hash.
Tab CDN
LSCache tích hợp sẵn với QUIC.cloud CDN — CDN miễn phí (có tier trả phí) được phát triển bởi chính team LiteSpeed.
Use CDN Mapping: ON nếu muốn dùng QUIC.cloud hoặc CDN khác.
CDN URL: Điền URL CDN của bạn. Với QUIC.cloud, tự động generate sau khi kết nối domain.
Original URLs: URLs cần rewrite qua CDN. Thường là static file extensions (css, js, jpg, png, webp, woff2).
Inc (Include) Img/JS/CSS: ON tất cả để CDN serve static assets.
Nếu đã dùng Cloudflare, có thể dùng Cloudflare thay vì QUIC.cloud. Nhưng QUIC.cloud có lợi thế tích hợp sâu hơn với LSCache — tự động purge cache khi LSCache purge, image optimization qua QUIC.cloud server, và không cần cấu hình riêng.
Trong trải nghiệm của tôi, QUIC.cloud miễn phí hoạt động tốt cho site dưới 50K pageviews/tháng. Trên mức đó, tier trả phí ($4-10/tháng) vẫn rẻ hơn Cloudflare Pro ($20/tháng).
Tab Image Optimization
Đây là một trong những features tôi thích nhất ở LSCache. Thay vì cài plugin image optimization riêng, LSCache tích hợp sẵn qua QUIC.cloud.
Auto Request Cron: ON. Tự động gửi yêu cầu tối ưu ảnh mới.
Optimize Level: “Lossless” cho quality cao nhất, “Lossy (Better Compression)” cho size nhỏ nhất. Tôi chọn “Lossy” cho blog — giảm 40-60% size mà肉眼 khó thấy khác biệt.
WebP Replacement: ON. Rất quan trọng. Tự động convert ảnh sang WebP format cho browsers hỗ trợ (hầu hết modern browsers), fallback JPEG/PNG cho browsers cũ. WebP nhỏ hơn 25-35% so với JPEG cùng quality.
WebP for Extra Quality: ON. Serve WebP với quality cao hơn cho những ảnh cần detail.
Lazy Load Images: ON. Delay load ảnh ngoài viewport, giảm initial page weight. LSCache lazy load tốt hơn native browser lazy loading vì hỗ trợ thêm placeholder và LQIP (Low Quality Image Placeholder).
Lazy Load Placeholder: Chọn “LQIP” (Low Quality Image Placeholder) — hiển thị bản mờ nhỏ của ảnh trong khi load bản đầy đủ, UX tốt hơn là blank space.
Responsive Placeholders: ON. Tạo placeholder responsive theo kích thước ảnh thực tế, tránh layout shift (CLS improvement).
Image Optimization via QUIC.cloud: Cần kết nối domain với QUIC.cloud (miễn phí). Sau khi kết nối, mỗi lần upload ảnh mới, LSCache tự động gửi lên QUIC.cloud để tối ưu, nhận lại bản optimized, replace bản gốc trên server.
Lưu ý: Bản gốc được backup trong thư mục lscache_orig/, có thể restore bất cứ lúc nào. QUIC.cloud miễn phí 5GB bandwidth/tháng cho image optimization — đủ cho site vừa.
Tab Page Optimization
Tab này quản lý HTML/CSS/JS optimization — tương đương những gì WP Rocket hay Autoptimize làm.
CSS Optimization
CSS Minify: ON. Xóa whitespace, comments, và ký tự không cần thiết trong CSS. Giảm size 15-25%.
CSS Combine: ON. Gộp nhiều CSS files thành 1 file, giảm HTTP requests. Tuy nhiên, nếu theme có nhiều CSS conditional hoặc quá nhiều files (>30), test kỹ — đôi khi combine gây layout issues.
CSS HTTP/2 Push: ON nếu server hỗ trợ HTTP/2. Push CSS files đến browser trước khi browser request, giảm render-blocking time.
CSS Async Load: ON. Rất quan trọng cho performance. Load CSS bất đồng bộ, không block rendering. Tránh vấn đề FOUC (Flash of Unstyled Content) bằng cách inline critical CSS.
CSS Critical: ON. Tự động generate critical CSS cho above-the-fold content, inline vào HTML. Phần CSS còn lại load bất đồng bộ. Đây là technique Google khuyến nghị cho Core Web Vitals.
JS Optimization
JS Minify: ON. Tương tự CSS minify, giảm JS size 15-30%.
JS Combine: Thận trọng. Gộp JS files có thể gây conflict, đặc biệt với themes và plugins phức tạp. Tôi bật ON cho site đơn giản, OFF cho site có nhiều interactive elements. Nếu bật mà thấy lỗi, tắt ngay.
JS HTTP/2 Push: ON nếu hỗ trợ HTTP/2.
JS Defer: ON. Defer JS execution cho đến khi HTML parse xong, không block rendering. An toàn hơn “async” cho hầu hết cases.
Load JS Deferred: ON. Có tác dụng tương tự defer nhưng comprehensive hơn — defer tất cả JS bao gồm inline scripts.
Remove jQuery Migrate: ON nếu site không dùng jQuery features cũ. Giảm 1 file JS unnecessary. Kiểm tra xem theme/plugins có dependency vào jQuery Migrate không trước khi bật.
HTML Optimization
HTML Minify: ON. Xóa whitespace và comments trong HTML output. Giảm 10-20% HTML size. Không ảnh hưởng hiển thị.
DNS Prefetch: Thêm domains thường dùng để browser resolve DNS sớm. Ví dụ: //fonts.googleapis.com, //cdn.quic.io, //www.googletagmanager.com. Giảm DNS lookup time 50-200ms per domain.
Remove Comments: ON. Xóa HTML comments (bao gồm WordPress generator tag), giảm size nhẹ và che giấu WordPress version.
Remove WordPress Emoji: ON. WordPress load emoji.js (12KB) mặc định. Nếu không dùng emoji trong content, xóa để tiết kiệm bandwidth và reduce JS execution time.
Remove Query Strings: ON. Xóa version query strings từ static assets (style.css?ver=6.4 → style.css), giúp CDN cache hiệu quả hơn. Plugin tự động handle cache busting qua filename thay vì query string.
Tab Database
Tab Database quản lý database cleanup — giữ database gọn giúp WordPress chạy nhanh hơn, đặc biệt khi cache miss.
Clean Post Revisions: ON. Xóa post revisions cũ, giảm bảng wp_posts phình to. Set giới hạn giữ lại 5 revisions gần nhất.
Clean Auto Drafts: ON. Xóa auto-draft posts tồn đọng.
Clean Trashed Posts/Pages/Comments: ON. Xóa items trong trash cũ hơn 7 ngày.
Clean Trackbacks/Pingbacks: ON. Hầu hết site không dùng trackbacks nữa, xóa để giảm database size.
Clean Expired Transients: ON. Transients là temporary data WordPress lưu trong database. Nhiều plugins tạo transients nhưng không cleanup. Xóa expired transients giúp giảm database size đáng kể.
Optimize Tables: ON. Chạy OPTIMIZE TABLE định kỳ để defragment database tables. Chọn schedule “Monthly” — thường xuyên hơn không cần thiết và tạo load không đáng có.
Database Optimization Schedule: Monthly. Chạy hàng tháng là đủ cho site vừa. Site lớn có thể cần weekly.
Tab Crawler (Cache Warmup)
Crawler là tính năng độc đáo của LSCache mà các plugin cache khác không có. Crawler tự động “thăm” các trang trên website để tạo cache trước khi real visitors đến.
Tại sao cần crawler? Khi cache expire hoặc bị purge, request đầu tiên của visitor sẽ là cache miss — họ sẽ thấy trang load chậm. Crawler giải quyết vấn đề này bằng cách pre-warm cache, đảm bảo mọi trang đã cached sẵn.
Crawler: ON. Bật crawler.
Crawler Interval: 302400 (3.5 ngày). Crawler chạy mỗi 3.5 ngày để warmup toàn bộ sitemap. Tùy thuộc vào số lượng pages — site dưới 500 pages có thể set 86400 (1 ngày), site trên 5000 pages nên set 604800 (7 ngày).
Crawler Run Duration: 400 seconds. Thời gian crawler chạy mỗi lần. 400 giây là hợp lý cho VPS 2 vCPU — đủ để crawl hàng trăm pages mà không overload server.
Crawler Usleep: 500 microseconds. Delay giữa mỗi request của crawler. Giá trị thấp = crawl nhanh hơn nhưng load server cao. 500 microseconds là cân bằng tốt.
Crawler Thread Number: 1 cho VPS nhỏ, 2-3 cho VPS mạnh. Số concurrent threads crawler chạy. Không set quá cao nếu VPS có ít resources.
Server Load Limit: 1.0 cho VPS 1 vCPU, 2.0 cho 2 vCPU, etc. Crawler tự động dừng khi server load vượt ngưỡng, tránh ảnh hưởng đến real visitors.
Sitemap Generation: ON. Crawler tự động generate sitemap dựa trên WordPress content. Có thể override bằng custom sitemap URL nếu muốn.
Sitemap Crawler: ON. Dùng generated sitemap để crawl. Phương pháp hiệu quả nhất vì crawler biết chính xác URL nào cần warmup.
Một tip quan trọng: sau khi publish post mới hoặc update quan trọng, chạy crawler thủ công: LiteSpeed Cache > Crawler > click “Manually Start Crawler”. Như vậy trang mới sẽ được warmup ngay thay vì đợi crawler schedule.
Tab Purge
Purge settings quyết định khi nào và như thế nào cache bị xóa.
Purge All on Upgrade: ON. Purge toàn bộ cache khi update plugin, theme, hoặc WordPress core. Đảm bảo visitors luôn thấy version mới nhất sau update.
Purge All: Trên toolbar admin hiển thị nút “Purge All” để purge thủ công. Tôi dùng tính năng này thường xuyên khi debug — purge, refresh, kiểm tra.
Auto Purge Rules: LSCache tự động purge khi:
- Publish/update/delete post/page
- New comment (approved)
- Update widget
- Change theme options
- Update menu
Tôi để mặc định tất cả — auto purge đảm bảo nội dung luôn fresh mà không cần thao tác thủ công. Chỉ tắt nếu có lý do đặc biệt (ví dụ: site mà content freshness không quan trọng, ưu tiên performance tuyệt đối).
Serve Stale: ON. Khi cache bị purge, thay vì phục vụ request đầu tiên chậm (cache miss), serve stale cached version trong khi background generate cache mới. Visitor không bao giờ thấy trang chậm. Tính năng này giống Stale-While-Revalidate của CDN nhưng chạy trên server của bạn.
ESI (Edge Side Includes) cho nội dung dynamic
ESI là một trong những tính năng mạnh mẽ nhất của LSCache nhưng ít người biết và dùng. Vấn đề: trên một trang WordPress, phần lớn nội dung là static (bài viết, sidebar) nhưng có những block là dynamic (giỏ hàng, tên user, “recent comments”). Nếu cache toàn bộ trang, nội dung dynamic sẽ sai. Nếu không cache, toàn bộ trang sẽ chậm.
ESI giải quyết bằng cách chia trang thành các blocks độc lập:
- Static blocks (bài viết, sidebar): Cache bình thường, TTL dài
- Dynamic blocks (giỏ hàng, user info): Đánh dấu ESI, không cache hoặc cache riêng với TTL ngắn
Khi server serve cached page, nó assemble các blocks lại: static blocks từ cache, dynamic blocks xử lý real-time. Visitor nhận trang hoàn chỉnh với nội dung dynamic chính xác, nhưng phần lớn trang đã được serve từ cache.
Bật và cấu hình ESI
Trong LiteSpeed Cache > Page Optimization > ESI:
Enable ESI: ON.
Default ESI TTL: 300 (5 phút). TTL cho dynamic blocks. 5 phút cân bằng giữa freshness và performance.
ESI Cache for Admin Bar: ON. Cache admin bar riêng — nó giống nhau cho tất cả logged-in users cùng role, không cần generate mới mỗi request.
ESI Cache for WooCommerce Cart: ON (nếu dùng WooCommerce). Cache cart widget riêng, chỉ update khi cart thay đổi. Đây là killer feature cho WooCommerce sites.
Ngoài admin settings, có thể đánh dấu ESI blocks trong code theme bằng functions:
// Render block sebagai ESI (dynamic, không cache)
if (function_exists('litespeed_esi_url')) {
echo litespeed_esi_url('my_dynamic_block');
}
// Register ESI block callback
add_action('litespeed_esi_my_dynamic_block', 'render_my_dynamic_block');
function render_my_dynamic_block() {
// Nội dung dynamic ở đây
echo '<div class="cart-count">' . WC()->cart->get_cart_contents_count() . '</div>
exit;
}
ESI chỉ hoạt động trên LiteSpeed Enterprise hoặc OpenLiteSpeed có compile ESI module. Nếu dùng OpenLiteSpeed từ package repository, ESI thường đã được include. Kiểm tra:
/usr/local/lsws/bin/lswsctrl -v | grep ESI
Cache prefix cho Multi-Site
Nếu chạy WordPress Multi-Site (network), mỗi site cần cache riêng để không serve sai nội dung giữa các subsites. LSCache tự động handle điều này thông qua cache prefix.
Mỗi site trong network được gán một cache prefix duy nhất (dựa trên blog ID). Khi request đến, server kiểm tra cache với prefix tương ứng, đảm bảo site A không nhận cached content của site B.
Cấu hình trong LiteSpeed Cache > General:
Network Use Primary Site Settings: ON nếu muốn tất cả subsites dùng chung cache settings từ main site. OFF nếu muốn mỗi subsite tự cấu hình riêng.
Khi dùng network-wide settings, chỉ cần cấu hình một lần trên main site. Tuy nhiên, nếu subsites có nhu cầu khác nhau (ví dụ: một site cần cache mobile riêng, site khác không), để OFF và cấu hình riêng cho mỗi site.
Cache prefix cũng quan trọng khi purge. LSCache cho phép purge cache của một site cụ thể hoặc toàn bộ network. Trong đa số trường hợp, purge theo site là đủ — tránh purge toàn bộ network khi chỉ update một subsite.
Tối ưu cho WooCommerce
WooCommerce là một trong những use cases LSCache hỗ trợ tốt nhất. Từ bản 4.0+, LSCache có chế độ WooCommerce riêng với auto-detection và smart caching.
Bật chế độ WooCommerce
Vào LiteSpeed Cache > WooCommerce. Tab này chỉ xuất hiện khi LSCache detect WooCommerce active.
Enable WooCommerce Cache: ON. Bật cache cho WooCommerce pages.
LSCache tự động exclude các trang không nên cache:
- Cart (
/cart/) - Checkout (
/checkout/) - My Account (
/my-account/) - Add to Cart URL pattern
- WC API endpoints
Và tự động cache:
- Shop page (
/shop/) - Product category pages
- Single product pages
- Tag và attribute pages
Purge cache khi có đơn hàng mới
Purge Product on Purchase: ON. Khi có đơn hàng mới, tự động purge cache của sản phẩm đã mua (để update stock count hiển thị). Rất quan trọng cho accuracy.
Purge All on Stock Low: OFF trừ khi site bán ít sản phẩm. Nếu có hàng ngàn sản phẩm, purge all mỗi khi một sản phẩm hết hàng là quá mức cần thiết và tạo load server không đáng có.
ESI cho WooCommerce
Như đã đề cập ở phần ESI, bật ESI cho WooCommerce Cart widget cho phép cache toàn bộ trang sản phẩm trong khi giỏ hàng vẫn hiển thị chính xác số lượng items. Đây là game-changer cho WooCommerce performance.
Trước khi có ESI, WooCommerce sites phải chọn giữa:
- Cache toàn bộ — nhanh nhưng giỏ hàng sai
- Không cache — giỏ hàng đúng nhưng trang chậm
- Cache via AJAX — giỏ hàng load bằng JavaScript sau khi trang load, tạo flicker
ESI cho lựa chọn thứ 4: cache toàn bộ, giỏ hàng đúng, không flicker. Server-side rendering của dynamic blocks, không cần JavaScript workaround.
Product Variations và Cache
WooCommerce product variations (size, color, etc.) tạo nhiều URL combinations. LSCache cache mỗi variation combination riêng, nên số lượng cached items tăng theo số variations. Đảm bảo cache storage đủ lớn.
Trong LiteSpeed Cache > Cache > TTL, set “Cache TTL for Front Page” và “Cache TTL for Feed” phù hợp. Với shop có sản phẩm hay thay đổi giá/khuyến mãi, TTL ngắn hơn (3600-14400 seconds) đảm bảo thông tin luôn cập nhật.
Benchmark: Trước và sau khi bật LSCache
Để đưa ra con số cụ thể thay vì chỉ nói “nhanh hơn”, tôi benchmark trên setup thực tế:
Setup test:
- VPS: 2 vCPU, 4GB RAM, SSD NVMe (Vultr HF)
- OS: Ubuntu 22.04 LTS
- Web server: OpenLiteSpeed 1.7.19
- PHP: 8.3 LSAPI
- WordPress: 6.5.3, theme lightweight (GeneratePress)
- Plugins: Yoast SEO, LiteSpeed Cache, Contact Form 7 (tối thiểu)
- Test tool:
ab(Apache Benchmark), PageSpeed Insights, WebPageTest - Test page: bài blog 1500 words, 5 images, không có third-party scripts ngoài Google Analytics
Kết quả
| Chỉ số | Không cache | LSCache ON | Thay đổi |
|---|---|---|---|
| TTFB | 520ms | 42ms | -92% |
| Full Page Load | 2.8s | 0.9s | -68% |
| Time to Interactive | 4.8s | 1.2s | -75% |
| Largest Contentful Paint | 3.2s | 1.1s | -66% |
| PageSpeed Mobile Score | 48 | 92 | +44 points |
| PageSpeed Desktop Score | 62 | 97 | +35 points |
| Requests/sec (ab -n 1000 -c 50) | 15.3 RPS | 182 RPS | +1090% |
| Server CPU (avg during test) | 87% | 12% | -86% |
| PHP-FPM processes active | 45-50 | 2-5 | -90% |
Con số nói lên tất cả. TTFB giảm 92% — từ 520ms xuống 42ms — là cải thiện đáng kể nhất. Server handle được gấp 12x requests (182 RPS vs 15.3 RPS) với CPU chỉ 12% thay vì 87%. Nghĩa là cùng một VPS, trước khi hết capacity ở 15 RPS, giờ handle được gần 200 RPS.
So sánh với WP Rocket trên cùng server
Để công bằng, tôi test WP Rocket (đã cấu hình tối ưu) trên cùng VPS, sau đó chuyển sang LSCache:
| Chỉ số | WP Rocket | LSCache | Khác biệt |
|---|---|---|---|
| TTFB | 185ms | 42ms | -77% |
| PageSpeed Mobile | 78 | 92 | +14 points |
| RPS (concurrent) | 45 RPS | 182 RPS | +304% |
| CPU avg | 52% | 12% | -77% |
WP Rocket tốt hơn không cache nhiều, nhưng LSCache vẫn vượt trội vì cache ở server level, bỏ qua hoàn toàn PHP. Điểm PageSpeed không khác nhau quá nhiều (vì phần lớn điểm phụ thuộc vào frontend optimization — CSS/JS minify, lazy load, image optimization — mà cả hai đều làm tốt). Nhưng TTFB và concurrent handling khác biệt rất lớn.
Troubleshooting thường gặp
Cache không hoạt động (luôn “miss”)
Kiểm tra từng bước:
- Verify server module:
curl -I https://yoursite.com | grep X-Litespeed. Nếu không thấy header, LSCache module chưa enable trên server. - Check .htaccess: Plugin cần ghi rules vào .htaccess. Nếu file permission không cho phép, cache không hoạt động.
chmod 666 /var/www/yoursite.com/public_html/.htaccess(tạm thời) rồi deactivate/activate lại plugin. - Conflict plugin: Một số plugin cache/optimization khác can thiệp vào headers. Disable tất cả optimization plugins khác, chỉ giữ LSCache, test lại.
- PHP version: Đảm bảo PHP chạy dưới LSAPI (không phải PHP-FPM). LiteSpeed + PHP-FPM không support LSCache đầy đủ. Kiểm tra:
php -vnên thấy “LiteSpeed” trong output. - Cookie bypass: Một số cookies khiến cache bypass. Kiểm tra trong LiteSpeed Cache > Cache > Do Not Cache Cookies. Items mặc định: wordpress_logged_in_, comment_author_, woocommerce_items_in_cart.
Trang trắng (White Screen of Death)
Sau khi bật LSCache, một số trang hiển thị trắng:
- JS Combine conflict: Tắt JS Combine, purge cache, kiểm tra lại. Nếu hết trắng, bật lại JS Combine và add JS files gây conflict vào exclusion list.
- PHP error trong ESI block: Nếu dùng ESI, PHP error trong ESI callback có thể gây trắng. Check PHP error log:
tail -50 /var/log/php8.3/error.log. - Memory limit: CSS/JS optimization tốn memory. Tăng PHP memory_limit lên 256MB hoặc 512MB trong php.ini.
CSS/JS bị break sau khi bật optimization
Đây là vấn đề phổ biến nhất:
- CSS Combine + Async: Khi bật CSS Combine và CSS Async cùng lúc, một số themes không handle được. Tắt CSS Async, giữ CSS Combine, test. Nếu ổn, bật lại CSS Async.
- JS Defer: Một số JavaScript cần chạy synchronously (analytics, tracking pixels). Tắt JS Defer, kiểm tra. Nếu ổn, bật lại và add scripts problematic vào “JS Deferred Excludes”.
- Cache stale: Sau khi thay đổi settings, luôn Purge All. Browser cũng có thể cache old version — test trong incognito tab.
- Critical CSS generate sai: Nếu Critical CSS không capture đúng styles, trang sẽ hiển thị sai momentarily rồi fix khi full CSS load. Thử tắt CSS Critical, kiểm tra layout ổn không, rồi bật lại. Có thể cần specify thêm URLs để generate critical CSS chính xác hơn.
WooCommerce giỏ hàng hiển thị sai
- Cache cart page: Đảm bảo /cart/ trong exclusion list (mặc định có). Nếu xóa nhầm, add lại.
- ESI cho cart widget: Nếu dùng cart widget ở sidebar/header, bật ESI cho WooCommerce Cart.
- Cookie not set: WooCommerce set cookie
woocommerce_items_in_cartkhi có sản phẩm trong giỏ. LSCache dùng cookie này để bypass cache cho shoppers. Nếu cookie bị block (plugin security, CDN), cache sẽ không bypass đúng.
Cache purge liên tục (hit rate thấp)
Nếu kiểm tra headers thấy liên tục miss dù đã visit trước đó:
- Purge trigger quá nhạy: Vào LiteSpeed Cache > Purge, kiểm tra auto purge rules. Nếu bật purge khi cron chạy, mỗi lần WP-Cron trigger sẽ purge toàn bộ cache.
- Third-party ping: Webhooks, uptime monitors, hoặc services ping site liên tục với parameters khác nhau, mỗi URL được cache riêng. Add query string exceptions.
- Cache vary quá nhiều: Nếu bật cache vary theo device, cookie, country, mỗi variation là một cached copy riêng. Giảm vary conditions nếu không cần thiết.
- Check hit rate: LiteSpeed Cache > Dashboard hiển thị cache hit rate. Mục tiêu: trên 90% cho public pages. Dưới 80% cần investigate.
Ý kiến cá nhân từ trải nghiệm thực tế
Sau hơn 2 năm dùng LSCache trên blog cá nhân và một số client sites, đây là đánh giá trung thực:
Điểm mạnh:
- Performance thực sự vượt trội. Không có plugin cache PHP nào sánh được khi so sánh apples-to-apples trên cùng server. TTFB dưới 50ms là điều mà WP Rocket hay W3TC không đạt được vì bản chất phải qua PHP.
- Miễn phí. Các features tương đương (image optimization, CDN, page optimization) nếu mua riêng từ các services khác tốn $100-200/năm. LSCache + QUIC.cloud miễn phí cung cấp gần như tương đương.
- Tích hợp tốt. Thay vì cài 5-6 plugins (cache + minify + lazy load + image optimization + CDN + database cleanup), LSCache làm hết trong một plugin. Ít plugin = ít conflict, ít updates, ít security vulnerabilities.
- Crawler/warmup là tính năng mà tôi wonder tại sao không ai copy. Pre-warm cache có nghĩa là visitors không bao giờ thấy trang chậm, kể cả sau khi cache expire.
Điểm yếu:
- Chỉ hoạt động trên LiteSpeed/OpenLiteSpeed. Nếu hosting dùng Nginx hay Apache, không thể dùng. Đây là rào cản lớn nhất — phải chọn LiteSpeed ecosystem trước khi hưởng lợi. Tuy nhiên, nếu đang cân nhắc chọn web server cho WordPress, đây là lý do mạnh để chọn OpenLiteSpeed.
- Learning curve. Giao diện settings nhiều tabs, nhiều options. Người mới dễ bị overwhelm và cấu hình sai. WP Rocket đơn giản hơn nhiều — bật lên là chạy, ít cần điều chỉnh.
- QUIC.cloud đôi khi chậm. Image optimization qua QUIC.cloud có thể mất 5-15 phút cho batch lớn, và một vài lần service downtime. Không phải vấn đề lớn nhưng đáng lưu ý.
- JS/CSS combine vẫn có thể gây conflict với một số themes/plugins phức tạp. Đây không phải lỗi LSCache mà là bản chất của combine — nhưng trải nghiệm debug không thú vị.
Verdict: Nếu đang chạy OpenLiteSpeed hoặc LiteSpeed Enterprise, LSCache là no-brainer — miễn phí, nhanh nhất, tích hợp tốt nhất. Không có lý do gì dùng plugin cache khác. Nếu đang chạy Nginx/Apache và không muốn chuyển server, WP Rocket vẫn là lựa chọn tốt nhất ở tầng plugin.
Kết hợp LSCache với OpenLiteSpeed đúng cách và SEO/GEO checklist, bạn có một WordPress site load trong dưới 1 giây, score 90+ PageSpeed, và handle traffic lớn mà không cần VPS đắt tiền.
Tổng kết
LiteSpeed Cache không chỉ là một plugin cache — nó là hệ sinh thái tối ưu performance toàn diện cho WordPress chạy trên LiteSpeed server. Từ server-level cache bypass PHP, đến image optimization, CSS/JS optimization, CDN, database cleanup, crawler warmup, và ESI cho dynamic content — tất cả trong một plugin miễn phí.
Cấu hình tối ưu không khó nhưng cần hiểu ý nghĩa từng option. Hy vọng bài viết này giúp bạn setup LSCache đúng cách và tận dụng hết sức mạnh của nó. Nếu gặp vấn đề trong quá trình cấu hình, phần troubleshooting phía trên covers hầu hết các trường hợp thường gặp.