Khoảng thời gian để lấy được byte dữ liệu đầu tiên, hay TTFB là gì?

TTFB là gì

TTFB là gì?

  • Đây là khoảng thời gian mà trình duyệt cần phải đợi để nhận được phần thông tin đầu tiên từ máy chủ web sau khi gửi yêu cầu nhận nó
  • TTFB là viết tắt của “Time To First Byte”
  • Nó có thể là nguyên nhân gây trì hoãn đáng kể trong kết xuất trang (page rendering)
  • Nó là hệ quả kết hợp của vấn đề mạng và tốc độ trang phía máy chủ

định nghĩa TTFB

Trì hoãn có thể xuất hiện giữa thời gian trình duyệt thực hiện yêu cầu và khi trình duyệt nhận được phản hồi.

Các trì hoãn này có thể tăng thêm và “thời gian cho dữ liệu đầu tiên / TTFB” là chỉ số chúng ta có thể sử dụng để xác định mức độ nghiêm trọng của tập hợp các trì hoãn này.

Nguyên nhân gây ra TTFB bị chậm là gì?

TTFB bị chậm

Nói chung có bốn nguyên nhân chính gây thời gian phản hồi máy chủ cao…

  • Vấn đề mạng
  • Tạo nội dung động
  • Cấu hình máy chủ web
  • Lưu lượng truy cập

Làm thế nào để TTFB nhanh hơn

Bước đầu tiên là tối ưu hóa những gì trong tầm tay của bạn. Những thứ bạn có quyền điều chỉnh bao gồm…

  • Tạo nội dung động
  • Cấu hình máy chủ web

Những thứ bạn ít có quyền điều chỉnh bao gồm…

  • Vấn đề mạng
  • Lưu lượng truy cập

Tin tốt là nếu bạn tập trung để ý đến những thứ bạn có thể điều chỉnh, cách máy chủ phản hồi (và TTFB của nó) sẽ được cải thiện cho những tình huống mà bạn không làm chủ được.

Tạo nội dung động

tạo nội dung động

Nguyên nhân chính gây ra hiện tượng TTFB lớn là việc máy chủ web phải tốn thời gian tạo nội dung động.

Khi máy chủ web phải bỏ công tạo nội dung động (như cách trang WordPress vẫn làm) một số thao tác cần phải xảy ra giữa thời gian nó nhận được yêu cầu và thời điểm nó gửi phản hồi cho trình duyệt.

Cách tốt nhất để minh họa điều này là so sánh sự khác nhau giữa nội dung tĩnh (static files) và nội dung động (dynamic content).

nội dung tĩnh và nội dung động

  • Khi trình duyệt yêu cầu file tĩnh, máy chủ có thể đáp ứng được ngay lập tức tệp yêu cầu.
  • Khi trình duyệt web yêu cầu file động, máy chủ web buộc phải tốn thời gian xây dựng nội dung hoàn chỉnh trước khi phản hồi được cho trình duyệt.

Các trang WordPress là nội dung động. Điều này có nghĩa là họ phải xây dựng trang bằng cách nhận các tệp PHP và tương tác với cơ sở dữ liệu.

xây dựng TTFB

Điều này có nghĩa là có hàng trăm, thậm chí là hàng ngàn tương tác phải được thực hiện chỉ để xây dựng lên một trang. Điều này xảy ra vào bất kỳ thời điểm nào khi trang được gọi bởi trình duyệt, thậm chí nếu nội dung của trang không thay đổi.

Quá trình này làm tăng TTFB của bạn, làm nó chậm lại (đôi khi quá trình này làm mất một giây hoặc nhiều hơn).

Cách chính để hạn chế điều này với các website dùng WordPress là sử dụng phiên bản cache tĩnh của trang.

Caching phiên bản tĩnh trang web WordPress của bạn

Phần “xây dựng” chúng ta xem xét ở trên xảy ra vào bất cứ khi nào trang được gọi bởi trình duyệt.

Điều gì sẽ xảy ra khi chúng ta không phải đợi trình duyệt gọi nó. Điều gì xảy ra nếu chúng ta xây dựng trang sẵn và có sẵn file HTML cho trình duyệt bất cứ khi nào nó muốn?

cache và không cache

Điều này gọi là kỹ thuật caching, và nó được mọi người áp dụng theo hai cách:

  • Cài đặt plugin caching
  • Sử dụng host WordPress cung cấp tính năng caching

Cài plugin caching

Bạn có thể thử plugin W3 Total Cache hoặc WP Super Cache hoặc chỉ cần tìm kiếm Google “plugin cache wordpress”. Plugin caching WordPress có thể yêu cầu bạn tốn thời gian học hỏi và có một số tùy chỉnh cấu hình nhưng một khi bạn thực hiện đúng, nó có thể rất hiệu quả.

Sử dụng hosting WordPress có tính năng caching

Sử dụng hosting WordPress chất lượng có có sẵn tính năng caching có thể giải quyết vấn đề này. Bạn có thể dùng gói host chất lượng cao của WP Engine, với tính năng cung cấp caching tự động và bảo vệ bạn tránh khỏi các lỗi cấu hình trong tương lai cũng như các thứ khác mà người quản trị web có xu hướng làm (thí dụ như cài đặt các plugin phá hoại tốc độ trang).

Cấu hình máy chủ web

Phần tiếp theo mà bạn có khả năng làm chủ là lựa chọn phần mềm máy chủ web và cách cấu hình nó.

Khi tôi nói về phần mềm máy chủ web, ý tôi là không phải là máy tính hoặc host, ý tôi là phần mềm mà nó sử dụng (Apache, NGNIX, IIS, Litespeed, vân vân).

Tôi chỉ đề cập một ví dụ về cấu hình máy chủ web, nhưng nó là vấn đề phổ biến nhất…

File .htaccess Apache

Với máy chủ web Apache, file .htaccess là nguyên nhân chính gây ra tình trạng TTFB kém.

File .htaccess là cách thức tiện lợi để bạn cấu hình máy chủ. Nó rất thuận tiện nhưng trong thực tế nó thường được sử dụng ở nơi không cần thiết.

File .htaccess được sử dụng để đưa ra các hướng dẫn cho máy chủ web về cách hoạt động. File này thường được dùng để tạo chuyển hướng, mod rewrites, thêm headers, vân vân.

Vấn đề là .htaccess là nguyên nhân chính gây ra tác động xấu về hiệu năng

Tài liệu chính thức về Apache nói rằng:

Tuy nhiên, nói chung việc sử dụng .htaccess cần phải tránh khi có thể. Bất cứ cấu hình nào mà bạn muốn đưa vào file .htaccess, có thể được thực hiện tương tự trong phần <Directory> trong file cấu hình chính của máy chủ.

Apache tiếp tục chỉ ra nhiều vấn đề hiệu suất có nguyên nhân từ việc sử dụng .htaccess

httpd sẽ tìm kiếm mọi thư mục để tìm được file .htaccess. Vì thế cho phép sự tồn tại của .htaccess là nguyên nhân quan trọng đánh mạnh vào vấn đề hiệu suất, bất kể là bạn có thực sự sử dụng nó hay không! Ngoài ra, file .htaccess được tải mỗi khi tài liệu được yêu cầu.

Trong trường hợp các lệnh RewriteRule, trong ngữ cảnh .htaccess, các biểu thức chính quy này phải được biên dịch lại với mọi yêu cầu tới thư mục, trong khi trong hoàn cảnh cấu hình máy chủ chính, chúng được biên dịch một lần và lưu vào bộ nhớ đệm. Thêm vào đó, bản thân các quy tắc phức tạp hơn, vì người ta phải giải quyết các hạn chế đi kèm với bối cảnh trên mỗi thư mục và mod_rewrite.

Chỉ riêng các điều trên có thể là nguyên nhân chính gây trì hoãn TTFB.

Cũng thế, nếu chúng ta xem xét vai trò to lớn của mod rewrite trong một trang WordPress thông thường, chúng ta có thể tưởng tượng nó tệ hại như thế nào.

Bất kể máy chủ web bạn sử dụng là gì, hãy đảm bảo rằng nó là phiên bản mới nhất, và bạn đi theo các hướng dẫn thực hành tốt nhất

Chỉ cần thường xuyên cập nhật phần mềm máy chủ web là thời gian TTFB của bạn sẽ được cải thiện.

PHP

Với PHP, điều đặc biệt quan trọng là cập nhật lên phiên bản mới nhất bởi vì một số cập nhật mới nhất bao gồm các cải tiến quan trọng về vấn đề hiệu suất.

Cùng một đoạn mã sẽ chạy chậm hơn trên phiên bản php cũ so với phiên bản mới hơn.

Giờ đến phần chúng ta không có quyền tự chủ

Ở phần đầu của bài viết này tôi đã đề cập đến bốn thứ làm ảnh hưởng đến TTFB.

Những thứ mà bạn có thể dễ dàng điều chỉnh là…

  • Tạo nội dung động
  • Cấu hình máy chủ web

Những thứ mà bạn ít có khả năng làm chủ là…

  • Lưu lượng truy cập
  • Vấn đề về mạng

Nếu bạn giảm được TTFB, bạn thực sự đã có “quyền tự chủ” nhất định với vấn đề lưu lượng truy cập.

Lưu lượng truy cập

Nếu TTFB của bạn và quá trình xử lý tổng thể của máy chủ bị chậm, điều này ảnh hưởng đến số lượng truy cập máy chủ web của bạn có thể xử lý.

Bằng cách cải thiện phương thức máy chủ web xử lý tạo nội dung động và cấu hình máy chủ, bạn sẽ có khả năng xử lý nhiều lưu lượng truy cập tốt hơn với cùng phần cứng.

Thời gian TTFB trung bình là bao nhiêu?

Rất khó để đưa ra con số chính xác bởi vì có nhiều hoàn cảnh, tình huống khác nhau, nhưng nói chung với trang web hiện đại và giả định là bạn đang kiểm tra một trang từ cùng khu vực địa lý nơi trang được host…

  • Dưới 100 mili giây thì vô cùng tuyệt vời
  • 200 mili giây là lý tưởng
  • 500 mili giây là không ổn
  • 1 giây thì tệ rồi
  • 2 giây hoặc hơn thì quá tệ

Khoảng cách càng xa giữa vị trí của người kiểm tra và máy chủ web thì TTFB càng dài do ảnh hưởng của độ trễ.

Vài thông số để bạn tham khảo, Google có 100 mili giây TTFB, trang bạn đang đọc đây có TTFB xấp xỉ 150 mili giây (trang của Varvy, bài gốc tiếng Anh của bài dịch này). Google nói rằng máy chủ web nên có thời gian phản hồi máy chủ từ 200 mili giây trở xuống.

(Dịch từ bài viết: Time to First Byte (TTFB) – Tác giả: Patrick Sexton – Website: Varvy)

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top