
Trả lời nhanh: TTFB (Time To First Byte) là thời gian từ lúc trình duyệt gửi yêu cầu đến khi nhận được byte đầu tiên của phản hồi, thước đo sạch nhất cho tốc độ phần máy chủ (mạng + dựng trang), trước khi mọi chuyện tải ảnh, chạy script bắt đầu. Mức đáng nhắm với khách Việt Nam và máy đặt tại Việt Nam: dưới 200ms, trang cache tốt dưới 100ms. TTFB cao chữa theo thứ tự: bật cache đúng tầng → soi database → soi ổ đĩa và CPU máy chủ → xét vị trí đặt máy so với khách.
Điểm PageSpeed xanh lè mà khách vẫn kêu "web anh vào chậm"? Nhìn TTFB, con số đo đúng cái khoảnh khắc chờ đợi đầu tiên, thứ người dùng cảm nhận rõ nhất mà nhiều bài tối ưu bỏ qua để đi nén ảnh. Bài này: đo TTFB đúng cách, đọc con số ra bệnh, và lộ trình chữa theo thứ tự hiệu quả.
- TTFB = mạng khứ hồi + máy chủ dựng trang; nó đứng TRƯỚC mọi thứ khác trên trang
- Đo bằng curl 5 lần lấy trung bình; đo từ mạng của khách, không phải từ chính server
- Bảng chẩn: <100ms đẹp · 100-300 ổn · 300-800 có bệnh · >800ms bệnh nặng
- Thứ tự chữa: cache → database → ổ đĩa/CPU → vị trí địa lý, đúng thứ tự đỡ tốn công
TTFB gồm những gì bên trong
Chuỗi thời gian từ lúc bấm Enter: phân giải DNS → bắt tay TCP/TLS → yêu cầu bay đến máy chủ → máy chủ dựng phản hồi (chạy code, hỏi database, đọc cache) → byte đầu bay về. Ba khúc đầu và cuối là mạng, phụ thuộc khoảng cách khách-máy; khúc giữa là máy chủ, phụ thuộc code, database, ổ đĩa, CPU. Chẩn bệnh đúng nghĩa là tách được hai phần này: trang tĩnh mà TTFB vẫn cao → nghi mạng/vị trí; trang động cao → nghi phần dựng.
Đo đúng cách trong 2 phút
curl -o /dev/null -s -w "DNS:%{time_namelookup} Connect:%{time_connect} TLS:%{time_appconnect} TTFB:%{time_starttransfer}n" https://ten-mien.vn/
# chay 5 lan; lan dau thuong cham hon (DNS + cache lanh), lay trung binh cac lan sauBa quy tắc đo: đo từ mạng của khách (4G/FTTH Việt Nam nếu khách Việt) chứ không phải từ chính server; đo cả trang cache lẫn trang động; đo vài khung giờ, TTFB chỉ cao giờ vàng là chuyện tải, cao đều là chuyện cấu trúc.
Đọc con số ra bệnh
- DNS chậm (>100ms): đổi DNS hosting tử tế / dùng DNS có anycast.
- Connect+TLS cao, TTFB-trừ-TLS thấp: khoảng cách địa lý, khách Việt máy Sing/Mỹ mất trắng 100-250ms mỗi vòng; chuyển máy về gần khách là đòn duy nhất.
- Phần dựng cao ở trang lẽ-ra-tĩnh: cache chưa ăn, kiểm tra header (x-cache, age...), cấu hình lại tầng cache (LiteSpeed/ISR/proxy).
- Phần dựng cao ở trang động: lần theo chuỗi: query database chậm (EXPLAIN, thiếu index) → ổ đĩa ì (database fsync trên ổ chậm, đo fio) → CPU nghẽn/steal time (top) → code N+1 query.
Lộ trình giảm - đúng thứ tự đỡ tốn công
- Cache trước tiên: trang nào tĩnh được cho tĩnh/ISR; WordPress bật page cache (LiteSpeed Cache trên máy chạy LiteSpeed là cặp bài trùng). Một tầng cache đúng thường cắt TTFB từ 800 xuống dưới 150ms, đòn to nhất, rẻ nhất.
- Database: bắt query chậm (slow log), thêm index cho cột hay lọc, bài chẩn database chậm ở mục liên quan đi sâu khúc này.
- Phần cứng máy chủ: mỗi trang động = hàng chục lượt đọc ngẫu nhiên + fsync, ổ NVMe latency dưới mili-giây giữ phần dựng ổn định cả giờ đông khách; CPU xung cao rút ngắn phần chạy code đơn luồng (PHP, Node đều vậy).
- Vị trí: khách Việt → máy Việt. Đây là hằng số vật lý, không cache nào bù được cho trang động.
TTFB và SEO - mối liên hệ thật
Google không xếp hạng trực tiếp bằng con số TTFB, nhưng TTFB là móng của LCP, chỉ số Core Web Vitals có ảnh hưởng xếp hạng: byte đầu về trễ thì mọi thứ sau trễ theo, LCP không thể đẹp trên nền TTFB xấu. Với web bán hàng, tác động lớn hơn nằm ở hành vi: mỗi khoảnh chờ đầu trang là một nhịp khách cân nhắc bấm Back. Giảm TTFB là khoản đầu tư ăn cả ba cửa: trải nghiệm, chuyển đổi, SEO.
Đo đúng cách, kèm lệnh
# Do 5 lan lay trung binh, tach tung khuc thoi gian
for i in $(seq 1 5); do
curl -o /dev/null -s -w "dns:%{time_namelookup} tcp:%{time_connect} tls:%{time_appconnect} ttfb:%{time_starttransfer} tong:%{time_total}\n" \
https://ten-mien.vn/
done
# Bo qua cache trinh duyet va cache trung gian
curl -o /dev/null -s -w "%{time_starttransfer}\n" -H "Cache-Control: no-cache" https://ten-mien.vn/Cách đọc từng khúc: phần phân giải tên miền cao là do máy chủ tên miền chậm. Phần bắt tay cao là do khoảng cách địa lý. Phần còn lại tới byte đầu tiên mới là thời gian máy chủ dựng trang, và đó là phần bạn sửa được bằng cấu hình.
Quan trọng: đo từ mạng của khách hàng, không đo từ chính máy chủ. Đo trên máy chủ luôn cho con số đẹp và vô nghĩa.
Bảng chẩn theo con số
| TTFB đo được | Đánh giá | Nghi ngờ đầu tiên |
|---|---|---|
| dưới 100 ms | Rất tốt | Trang đang được phục vụ từ bộ nhớ đệm |
| 100 tới 200 ms | Tốt | Mức nên nhắm với khách Việt Nam và máy chủ đặt tại Việt Nam |
| 200 tới 500 ms | Cần cải thiện | Chưa có bộ nhớ đệm trang, hoặc truy vấn dữ liệu chậm |
| 500 tới 800 ms | Kém | Nhiều truy vấn nặng, hoặc máy chủ quá tải |
| trên 800 ms | Nặng | Máy chủ đặt quá xa, hoặc thiếu tài nguyên nghiêm trọng |
Thứ tự chữa, đỡ tốn công nhất
- Bật bộ nhớ đệm trang. Trang tĩnh phục vụ từ đệm thường xuống dưới 100 ms ngay lập tức. Đây là thay đổi hiệu quả nhất và rẻ nhất.
- Soi truy vấn dữ liệu. Bật nhật ký truy vấn chậm, tìm truy vấn trên một giây. Thiếu chỉ mục là nguyên nhân số một, và sửa không tốn tiền.
- Kiểm ổ đĩa và bộ nhớ máy chủ. Chạy
iostat -x 2lúc cao điểm: cột chờ ổ đĩa cao nghĩa là ổ đang là nút thắt. Kiểm luôn máy có đang dùng vùng nhớ tạm không. - Xét vị trí máy chủ. Khách ở Việt Nam mà máy chủ ở nước ngoài thì riêng phần đi về đã mất 150 tới 250 ms, không cấu hình nào bù được. Đây là lý do nên đặt máy chủ trong nước khi khách hàng chủ yếu ở Việt Nam.
Liên hệ với SEO, nói cho đúng
- Chỉ số này không phải yếu tố xếp hạng trực tiếp. Nhưng nó nằm bên trong chỉ số thời gian hiện phần tử lớn nhất, và chỉ số đó thì Google có dùng.
- Nghĩa là giảm được nó thì chỉ số kia cải thiện theo, và đó là con đường gián tiếp nhưng chắc chắn.
- Với công cụ thu thập dữ liệu, máy chủ phản hồi chậm làm giảm số trang được quét trong một lần. Website nhiều trang thì đây là ảnh hưởng thật.
- Theo dõi số liệu người dùng thật trong Search Console mỗi tháng, thay vì đo một lần rồi kết luận.
Câu hỏi thường gặp
TTFB bao nhiêu là tốt?
Khách và máy cùng ở Việt Nam: dưới 100ms là đẹp (trang cache), 100-200ms tốt, 200-500 chấp nhận được với trang động phức tạp, trên 800ms là có bệnh cần chữa. Khách quốc tế cộng thêm phần khứ hồi địa lý.
Vì sao PageSpeed điểm cao mà TTFB vẫn tệ?
PageSpeed chấm nhiều tiêu chí phía trình duyệt (ảnh, script, layout); TTFB chỉ là một mục trong đó. Site có thể gọn gàng phía client nhưng máy chủ ì, điểm vẫn khá mà cảm giác vào trang vẫn chậm. Đo cả hai.
CDN có giảm TTFB không?
Cho nội dung tĩnh cache tại edge: có, rõ. Cho trang động phải về origin dựng: không đáng kể, thậm chí thêm một chặng. Trang động muốn TTFB đẹp: origin khỏe và gần khách.
TTFB của tôi lúc nhanh lúc chậm là sao?
Dao động theo giờ = tải: hàng xóm ồn (steal time), database nghẽn giờ vàng, hoặc cache hết hạn dồn đợt. Đo có hệ thống các khung giờ rồi soi từng nghi phạm theo bảng chẩn ở trên.
Bài viết liên quan
- IOPS là gì? Vì sao quyết định tốc độ web/database
- Database MySQL/PostgreSQL chậm: 6 nguyên nhân
- VPS ổ Enterprise U.2 NVMe RAID 10 tại TND
- Bun runtime trên VPS: chạy Next.js nhanh hơn Node.js 2x?
- Chuyển website sang VPS không downtime: quy trình 9 bước
- Cách dùng VPS cho người mới: SSH, tmux, basic security (zero-to-hero)
- Zalo OA là gì? Các loại tài khoản, phí và cách đăng ký
- Cài Docker trên VPS Ubuntu 24.04: chuẩn từng lệnh
- Một VPS thay 5 dịch vụ thuê bao: tự host tiết kiệm gì?



