Làm cách nào để giảm thời gian chờ đợi (ttfb)


113

Tôi có một truy vấn liên quan đến việc lấy danh sách người dùng từ một bảng theo thứ tự được sắp xếp dựa trên thời điểm nó được tạo. Tôi nhận được sơ đồ thời gian sau từ các công cụ dành cho nhà phát triển chrome.

thời gian từ chrome

Bạn có thể thấy rằng TTFB (thời gian đến byte đầu tiên) quá cao.
Tôi không chắc liệu đó có phải là do sắp xếp SQL hay không. Nếu đó là lý do thì làm thế nào tôi có thể giảm thời gian này?
Hay là do TTFB. Tôi thấy các blog nói rằng TTFB nên ít hơn (<1 giây). Nhưng đối với tôi, nó hiển thị> 1 giây. Đó là do truy vấn của tôi hay điều gì khác?
Tôi không chắc làm thế nào tôi có thể giảm thời gian này.
Tôi đang sử dụng góc cạnh. Tôi có nên sử dụng góc để sắp xếp bảng thay vì sắp xếp SQL không? (nhiều bài viết nói rằng đó không phải là vấn đề)
Điều tôi muốn biết là làm cách nào để giảm TTFB. Các bạn ơi! Tôi thực sự mới với điều này. Đó là nhiệm vụ được giao cho tôi bởi các thành viên trong nhóm của tôi. Tôi không chắc làm cách nào để giảm thời gian TTFB. Tôi đã xem nhiều bài viết, nhưng không thể hiểu đúng. TTFB là gì. Đó có phải là thời gian được thực hiện bởi máy chủ?


8
Câu hỏi của bạn cho thấy sự thiếu hiểu biết về những gì đang xảy ra ở đây. Đây là thời gian chờ máy chủ, vì vậy việc bạn sử dụng AngularJS hay một số khung công tác khác đều không liên quan. Nếu bạn muốn cải thiện mã phía máy chủ, bạn thực sự phải cho chúng tôi xem mã.
dirkk

@govindpatel, nếu câu trả lời của tôi bên dưới đã giúp bạn hoặc bạn nghĩ nó trả lời được câu hỏi, vui lòng đánh dấu nó là câu trả lời đúng;)
Daniel T. Sobrosa

Đối với việc sắp xếp bảng đơn giản (giả sử dữ liệu bảng đã được tìm nạp và bạn chỉ sắp xếp lại dữ liệu theo một thuộc tính khác), việc thực hiện ở phía máy khách sẽ nhanh hơn nhiều so với việc gửi một yêu cầu khác cho dữ liệu đã sắp xếp.
Richik SC

Câu trả lời:


115

TTFB không phải là thời gian đến byte đầu tiên của phần nội dung phản hồi (tức là dữ liệu hữu ích, chẳng hạn như: json, xml, v.v.), mà là thời gian đến byte đầu tiên của phản hồi nhận được từ máy chủ. Byte này là phần bắt đầu của các tiêu đề phản hồi.

Ví dụ: nếu máy chủ gửi tiêu đề trước khi thực hiện công việc khó khăn (như SQL nặng), bạn sẽ nhận được TTFB rất thấp, nhưng nó không phải là "true".

Trong trường hợp của bạn, TTFB đại diện cho thời gian bạn dành để xử lý dữ liệu trên máy chủ.

Để giảm TTFB, bạn cần thực hiện công việc phía máy chủ nhanh hơn.


2
Để chẩn đoán thêm thời gian xảy ra trong TTFB, bạn có thể sử dụng các phương pháp định thời phía máy chủ (ví dụ: thiết lập bộ hẹn giờ hoặc nhật ký gỡ lỗi) để gỡ lỗi thời gian dành cho mỗi logic.
Raptor

1
Hãy xem bài viết này, nó giải thích vấn đề chi tiết và đưa ra lời khuyên cho các giải pháp khả thi: websiteoptimization.com/speed/tweak/time-to-first-byte
LucaM

Cẩn thận với điều trị TTFB như là điểm quan trọng nhất: blog.cloudflare.com/...
Owen Blacker

Nếu câu trả lời này giúp bạn @govindpatel, đánh dấu nó như là câu trả lời đúng, xin vui lòng;)
Daniel T. Sobrosa

16

Tôi đã gặp vấn đề tương tự. Dự án của tôi đang chạy trên máy chủ cục bộ. Tôi đã kiểm tra mã php của mình.

$db = mysqli_connect('localhost', 'root', 'root', 'smart');

Tôi sử dụng localhostđể kết nối với cơ sở dữ liệu cục bộ của mình. Đó có thể là nguyên nhân của vấn đề mà bạn đang mô tả. Bạn có thể sửa đổi HOSTStệp của mình . Thêm dòng

127.0.0.1 localhost.


5
Cảm ơn bạn. Tôi đã thay đổi localhost(TTFB: 1s) để 127.0.0.1(TTFB: 12ms)
Ông Đen

Trong trường hợp của tôi, câu trả lời này cũng hữu ích: TTFB 2,39 s -> TTFB 110 ms. Tại sao ai đó lại phản đối nó?
Martin Pabst

Tôi nghĩ rằng cũng cố định nó cho ứng dụng Spring-Boot của tôi, tôi đang sử dụng một cơ sở dữ liệu Postgres trong một Docker-container, TTFB đã lên đến 10s, bây giờ nó chỉ khoảng 40ms :)
Sepultura

Tại sao "localhost" mất nhiều thời gian hơn?
showdev

14

TTFB là một cái gì đó xảy ra ở hậu trường. Trình duyệt của bạn không biết gì về những gì xảy ra đằng sau hậu trường.

Bạn cần xem xét những truy vấn nào đang được chạy và cách trang web kết nối với máy chủ.

Bài viết này có thể giúp hiểu TTFB, nhưng nếu không, bạn cần tìm hiểu sâu hơn về ứng dụng của mình.


4

Tôi khuyên bạn nên đọc bài viết này và tập trung hơn vào cách tối ưu hóa phản hồi tổng thể cho yêu cầu của người dùng (một trang, kết quả tìm kiếm, v.v.)

Một lập luận tốt cho điều này là ví dụ họ đưa ra về việc sử dụng gzip để nén trang. Mặc dù ttfb nhanh hơn khi bạn không nén, nhưng trải nghiệm chung của người dùng là tồi tệ nhất vì mất nhiều thời gian hơn để tải xuống nội dung không được nén.


Hãy chắc chắn để kiểm tra phần bình luận của bài viết đó. Nhiều người đưa ra những lý do thuyết phục để quan tâm đến TTFB.
Zack Macomber

4

Nếu bạn đang sử dụng PHP, hãy thử sử dụng <?php flush(); ?>after </head>và before </body>hoặc bất kỳ phần nào bạn muốn xuất nhanh (như tiêu đề hoặc nội dung). Nó sẽ xuất ra mã thực sự mà không cần đợi php kết thúc. Không sử dụng chức năng này mọi lúc, nếu không tốc độ tăng sẽ không đáng chú ý.

Thêm thông tin

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.