Case study tối ưu hiệu suất này ghi lại hành trình biến một website e-commerce “chậm đến mức mất khách” thành website nhanh nhất trong phân khúc — từ 6 giây xuống 1.2 giây load time, kéo theo doanh thu online tăng 40% chỉ trong 2 tháng.
Bối cảnh
Khách hàng
Chuỗi cửa hàng mỹ phẩm tại Việt Nam, 12 cửa hàng offline + 1 website e-commerce. Doanh thu online: 800 triệu VND/tháng (chiếm 15% tổng doanh thu).
Vấn đề
CEO phản ánh: “Website chậm lắm. Khách hàng complain suốt. Conversion rate chỉ 0.8% — trong khi industry average là 2-3%.”
Audit ban đầu
| Metric | Kết quả | Đánh giá |
|---|---|---|
| PageSpeed Mobile | 22/100 | Rất kém |
| PageSpeed Desktop | 48/100 | Kém |
| LCP (mobile) | 8.2 giây | Kém (target ≤2.5s) |
| INP | 650ms | Kém (target ≤200ms) |
| CLS | 0.45 | Kém (target ≤0.1) |
| TTFB | 3.1 giây | Rất kém |
| Total page weight | 12.5 MB | Quá nặng |
| HTTP requests | 187 | Quá nhiều |
| Bounce rate (mobile) | 72% | Rất cao |
| Conversion rate | 0.8% | Dưới industry average |
Tech stack
| Component | Technology |
|---|---|
| CMS | WordPress + WooCommerce |
| Theme | Flatsome (page builder) |
| Plugins | 42 plugins active |
| Hosting | Shared hosting Việt Nam (80K VND/tháng) |
| CDN | Không có |
| Caching | Không có |
| Images | JPEG/PNG, không optimize |
Root cause analysis
| Nguyên nhân | Impact | Chi tiết |
|---|---|---|
| Shared hosting | TTFB 3.1s | Server trả lời chậm vì share với 200+ sites |
| 42 plugins | +4 giây load | Mỗi plugin thêm CSS/JS files |
| Hình ảnh chưa optimize | +3 giây | 30 ảnh JPEG 1-3MB mỗi ảnh trên trang chủ |
| Không CDN | +1 giây | User Việt Nam → server ở Singapore |
| Theme nặng (Flatsome) | +2 giây | Page builder render nhiều inline CSS/JS |
| Không caching | Every visit = fresh render | Database query mỗi request |
Quy trình tối ưu: 4 tuần
Tuần 1: Infrastructure (Quick Wins)
Ngày 1 — CDN (Cloudflare Free):
- Setup Cloudflare, đổi nameserver
- Enable Auto Minify (HTML, CSS, JS)
- Enable Brotli compression
- Kết quả: TTFB giảm từ 3.1s → 1.8s
Ngày 2 — Hosting upgrade:
- Chuyển từ shared hosting 80K → VPS cloud 500K/tháng
- 2 vCPU, 4GB RAM, SSD NVMe
- Setup PHP 8.3 + OPcache
- Kết quả: TTFB giảm từ 1.8s → 0.4s
Ngày 3 — Caching:
- Install WP Rocket (caching plugin)
- Page cache: HTML cached, serve static
- Browser cache: CSS/JS/images cache 1 năm
- Database optimization: clean revisions, transients
- Kết quả: Page load giảm 60%
Kết quả Tuần 1:
| Metric | Trước | Sau tuần 1 | Cải thiện |
|---|---|---|---|
| PageSpeed Mobile | 22 | 45 | +23 |
| LCP | 8.2s | 4.1s | -50% |
| TTFB | 3.1s | 0.4s | -87% |
| Page weight | 12.5 MB | 10.2 MB | -18% |
Tuần 2: Image & Asset Optimization
Ngày 4-5 — Image optimization:
- Convert tất cả ảnh sang WebP (ShortPixel plugin)
- Lazy loading cho ảnh below-fold
- Responsive images (srcset): 400w, 800w, 1200w
- Preload hero image trên trang chủ
- Tổng: 230 ảnh optimized
| Trước | Sau |
|---|---|
| 30 ảnh JPEG × 2MB = 60MB | 30 ảnh WebP × 150KB = 4.5MB |
Ngày 6-7 — Plugin audit:
| Loại | Số plugin trước | Sau audit | Action |
|---|---|---|---|
| Essential (WooCommerce, payment) | 8 | 8 | Giữ nguyên |
| SEO (Yoast, Schema) | 3 | 2 | Gộp 2 plugin schema thành 1 |
| Performance (cache, optimize) | 2 | 2 | WP Rocket + ShortPixel |
| Marketing (popup, slider, social) | 12 | 4 | Xóa 8 plugin không dùng/thay bằng custom code |
| Functionality (forms, tables) | 8 | 5 | Gộp/thay thế |
| Abandoned/unused | 9 | 0 | Xóa hết |
| Tổng | 42 | 21 | -50% |
Ngày 8 — Font optimization:
- Thay Google Fonts (external request) bằng self-hosted fonts
- Subset: chỉ giữ Latin + Vietnamese characters
- Font display: swap
- Kết quả: -300ms load time
Kết quả Tuần 2:
| Metric | Sau tuần 1 | Sau tuần 2 | Cải thiện |
|---|---|---|---|
| PageSpeed Mobile | 45 | 68 | +23 |
| LCP | 4.1s | 2.3s | -44% |
| Page weight | 10.2 MB | 3.1 MB | -70% |
| HTTP requests | 187 | 72 | -62% |
Tuần 3: Code & Rendering Optimization
Critical CSS:
- Extract critical CSS cho above-fold content
- Defer non-critical CSS
- Impact: -400ms render time
JavaScript optimization:
- Defer all non-critical JS (analytics, chat, social)
- Remove jQuery dependency ở frontend (dùng vanilla JS)
- Code-split WooCommerce JS: chỉ load cart/checkout JS trên trang tương ứng
- Impact: -800ms INP improvement
Third-party script management:
| Script | Trước | Sau |
|---|---|---|
| Google Analytics | Sync load | Defer, load after 3s |
| Facebook Pixel | Sync load | Defer, load after 3s |
| Tawk.to chat | Sync load | Load on user interaction (scroll/click) |
| Hotjar | Sync load | Load after 5s |
| Zalo widget | Sync load | Load after 3s |
CLS fixes:
- Set width/height cho tất cả images
- Reserve space cho ads/banners
- Font display: optional (thay vì swap)
- Impact: CLS từ 0.45 → 0.05
Kết quả Tuần 3:
| Metric | Sau tuần 2 | Sau tuần 3 | Cải thiện |
|---|---|---|---|
| PageSpeed Mobile | 68 | 85 | +17 |
| LCP | 2.3s | 1.5s | -35% |
| INP | 450ms | 120ms | -73% |
| CLS | 0.35 | 0.05 | -86% |
Tuần 4: Database & Backend Optimization
Database optimization:
- Thêm index cho WooCommerce product queries
- Optimize
wp_optionstable (autoload cleanup) - Install Redis Object Cache
- Impact: -200ms TTFB on dynamic pages
WooCommerce specific:
- Disable cart fragments AJAX trên non-cart pages
- Optimize product listing query (reduce joins)
- Limit related products to 4 (thay vì 12)
Final touches:
- Preconnect tới third-party domains
- DNS prefetch
- HTTP/2 server push cho critical assets
Kết quả tổng hợp
Performance Metrics — Before vs After
| Metric | Trước | Sau | Cải thiện |
|---|---|---|---|
| PageSpeed Mobile | 22 | 89 | +67 điểm |
| PageSpeed Desktop | 48 | 96 | +48 điểm |
| LCP (mobile) | 8.2s | 1.2s | -85% |
| INP | 650ms | 120ms | -82% |
| CLS | 0.45 | 0.05 | -89% |
| TTFB | 3.1s | 0.3s | -90% |
| Page weight | 12.5 MB | 1.8 MB | -86% |
| HTTP requests | 187 | 45 | -76% |
Business Metrics — Before vs After (sau 2 tháng)
| Metric | Trước | Sau | Cải thiện |
|---|---|---|---|
| Bounce rate (mobile) | 72% | 38% | -47% |
| Avg. session duration | 1:20 | 3:05 | +131% |
| Pages/session | 2.1 | 4.3 | +105% |
| Conversion rate | 0.8% | 1.9% | +137% |
| Doanh thu online/tháng | 800 triệu | 1.12 tỷ | +40% |
| Add-to-cart rate | 3.2% | 6.8% | +112% |
| Organic traffic | 25,000/tháng | 32,000/tháng | +28% |
Chi phí đầu tư
| Hạng mục | Chi phí |
|---|---|
| Performance optimization (4 tuần) | 45 triệu VND |
| VPS hosting (thêm 420K/tháng so với cũ) | 5 triệu/năm |
| WP Rocket license | 1.5 triệu/năm |
| ShortPixel license | 600K/năm |
| Cloudflare | Free |
| Tổng đầu tư năm 1 | ~52 triệu VND |
ROI
| Metric | Giá trị |
|---|---|
| Doanh thu tăng thêm/tháng | 320 triệu VND |
| Doanh thu tăng thêm/năm | 3.84 tỷ VND |
| Tổng đầu tư | 52 triệu VND |
| ROI | 7,285% |
Hoàn vốn trong 5 ngày.
Bài học rút ra
Bài học 1: Infrastructure first
80% cải thiện đến từ 3 thay đổi đầu tiên: CDN + hosting upgrade + caching. Đừng bắt đầu bằng code optimization khi server trả lời mất 3 giây.
Bài học 2: Plugin audit là bắt buộc
42 → 21 plugins giảm 2 giây load time. Quy tắc: mỗi plugin phải “earn its place” — nếu không mang lại giá trị rõ ràng, xóa.
Bài học 3: Image optimization có ROI cao nhất
Effort thấp (install plugin + convert), impact cao (giảm 70-80% page weight). Mọi website nên làm đầu tiên.
Bài học 4: Đo lường trước và sau
Không đo = không biết cải thiện bao nhiêu. Setup tracking trước khi optimize: PageSpeed score, Core Web Vitals, conversion rate, bounce rate. Báo cáo cho stakeholder bằng số liệu, không bằng cảm tính.
FAQ — Câu hỏi thường gặp
1. Có cần rebuild website để tối ưu không?
Không cho hầu hết trường hợp. 80% cải thiện đến từ optimization (CDN, caching, image, plugin cleanup) mà không cần thay đổi code. Chỉ rebuild khi: theme quá nặng không thể optimize, hoặc cần chuyển sang tech stack mới (WordPress → headless/Shopify).
2. Tối ưu mất bao lâu để thấy kết quả SEO?
Google cần 28 ngày để update Core Web Vitals field data. Ranking changes thường thấy sau 1-3 tháng. Conversion rate improvement thấy ngay sau optimization (vì user experience tốt hơn immediately).
3. Chi phí 45 triệu cho optimization — có rẻ hơn option nào không?
Có thể tự làm nếu có developer in-house (~10-15 giờ effort). Nhưng cần kinh nghiệm — optimize sai có thể break website. Outsource đảm bảo quality, có warranty, và thường nhanh hơn (2-4 tuần vs 1-2 tháng tự làm). Liên hệ Trinh Digital để nhận audit miễn phí.
Kết luận
Website e-commerce từ 6 giây xuống 1.2 giây — doanh thu tăng 40%. Đây không phải phép màu — đây là kết quả của systematic optimization: infrastructure → assets → code → database.
Khoản đầu tư 52 triệu VND tạo ra 3.84 tỷ VND doanh thu tăng thêm/năm. Đó là ROI 7,285% — có lẽ là khoản đầu tư hiệu quả nhất mà bất kỳ SME nào có thể thực hiện cho website.
Nếu website của bạn đang chậm và bạn muốn biết có thể cải thiện bao nhiêu, hãy liên hệ Trinh Digital để được audit hiệu suất miễn phí — chúng tôi sẽ phân tích chi tiết và đề xuất lộ trình tối ưu với ROI cụ thể.