Bagaimana cara mengurangi waktu tunggu (ttfb)

114

Saya memiliki kueri yang melibatkan mendapatkan daftar pengguna dari tabel dalam urutan yang diurutkan berdasarkan pada waktu itu dibuat. Saya mendapatkan diagram waktu berikut dari alat pengembang chrome.

waktu dari krom

Anda dapat melihat bahwa TTFB (waktu ke byte pertama) terlalu tinggi.
Saya tidak yakin apakah itu karena jenis SQL. Jika itu alasannya, bagaimana saya bisa mengurangi waktu ini?
Atau karena TTFB. Saya melihat blog yang mengatakan bahwa TTFB harus lebih kecil (<1sec). Tapi bagi saya itu menunjukkan> 1 detik. Apakah karena pertanyaan saya atau hal lain?
Saya tidak yakin bagaimana saya bisa mengurangi waktu ini.
Saya menggunakan sudut. Haruskah saya menggunakan angular untuk mengurutkan tabel daripada SQL sort? (banyak posting mengatakan itu seharusnya tidak menjadi masalah)
Yang ingin saya ketahui adalah bagaimana cara mengurangi TTFB. Guys! Saya sebenarnya baru dalam hal ini. Itu adalah tugas yang diberikan kepada saya oleh anggota tim saya. Saya tidak yakin bagaimana cara mengurangi waktu TTFB. Saya melihat banyak postingan, tetapi tidak dapat memahami dengan baik. Apa itu TTFB. Apakah ini waktu yang dibutuhkan oleh server?

govindpatel.dll
sumber
8
Pertanyaan Anda menunjukkan kurangnya pemahaman tentang apa yang terjadi di sini. Ini adalah waktu menunggu server, jadi apakah Anda menggunakan AngularJS atau kerangka kerja lain tidak relevan. Jika Anda ingin meningkatkan kode sisi server, Anda sebenarnya harus menunjukkan kepada kami kodenya.
dirkk
@govindpatel, jika jawaban saya di bawah ini membantu Anda atau menurut Anda itu menjawab pertanyaan, tandai sebagai jawaban yang benar;)
Daniel T. Sobrosa
Untuk penyortiran tabel sederhana (dengan asumsi data tabel telah diambil dan Anda hanya menggunakan data dengan properti yang berbeda) akan jauh lebih cepat untuk melakukannya di sisi klien daripada mengirimkan permintaan lain untuk data yang diurutkan.
Richik SC

Jawaban:

116

TTFB bukanlah waktu untuk byte pertama dari respons yang diterima (yaitu, data yang berguna, seperti: json, xml, dll.), Melainkan waktu untuk byte pertama dari respons yang diterima dari server. Byte ini adalah awal dari header respons.

Misalnya, jika server mengirim header sebelum melakukan kerja keras (seperti SQL yang berat), Anda akan mendapatkan TTFB yang sangat rendah, tetapi itu tidak "benar".

Dalam kasus Anda, TTFB mewakili waktu yang Anda habiskan untuk memproses data di server.

Untuk mengurangi TTFB, Anda perlu melakukan pekerjaan sisi server lebih cepat.

Daniel T. Sobrosa
sumber
2
Untuk lebih mendiagnosis pengaturan waktu yang terjadi selama TTFB, Anda dapat menggunakan metode pengaturan waktu sisi server (misalnya pengatur waktu pengaturan, atau log debug) untuk men-debug waktu yang dihabiskan pada setiap logika.
Raptor
1
Lihat artikel ini, ini menjelaskan masalah secara rinci dan memberikan saran untuk solusi yang mungkin: websiteoptimization.com/speed/tweak/time-to-first-byte
LucaM
Waspadalah dalam memperlakukan TTFB sebagai poin terpenting: blog.cloudflare.com/…
Owen Blacker
Jika jawaban ini membantu Anda @govindpatel, tandai sebagai tanggapan yang benar, silakan;)
Daniel T. Sobrosa
16

Saya telah menemui masalah yang sama. Proyek saya berjalan di server lokal. Saya memeriksa kode php saya.

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

Saya gunakan localhostuntuk menyambung ke database lokal saya. Itu mungkin penyebab masalah yang Anda gambarkan. Anda dapat mengubah HOSTSfile Anda . Tambahkan garis

127.0.0.1 localhost.

CH Chow
sumber
5
Terima kasih. Saya berubah localhost(TTFB: 1s) menjadi 127.0.0.1(TTFB: 12ms)
Mr. Black
Dalam kasus saya, jawaban ini juga membantu: TTFB 2,39 s -> TTFB 110 ms. Mengapa seseorang menolaknya?
Martin Pabst
Saya pikir itu juga memperbaikinya untuk aplikasi Spring-Boot saya, saya menggunakan database Postgres di Docker-Container, TTFB naik hingga 10 detik, sekarang hanya sekitar 40ms :)
Sepultura
Mengapa "localhost" membutuhkan waktu lebih lama?
showdev
14

TTFB adalah sesuatu yang terjadi di balik layar. Browser Anda tidak tahu apa-apa tentang apa yang terjadi di balik layar.

Anda perlu melihat kueri apa yang sedang dijalankan dan bagaimana situs web terhubung ke server.

Artikel ini mungkin membantu memahami TTFB, tetapi jika tidak, Anda perlu menggali lebih dalam tentang aplikasi Anda.

Pureferret
sumber
4

Saya menyarankan Anda membaca artikel ini dan lebih fokus pada cara mengoptimalkan keseluruhan respons terhadap permintaan pengguna (baik halaman, hasil pencarian, dll.)

Argumen yang bagus untuk ini adalah contoh yang mereka berikan tentang penggunaan gzip untuk mengompresi halaman. Meskipun ttfb lebih cepat saat Anda tidak mengompres, pengalaman pengguna secara keseluruhan lebih buruk karena butuh waktu lebih lama untuk mengunduh konten yang tidak di-zip.

Mike
sumber
Pastikan untuk memeriksa bagian komentar dari artikel itu. Banyak orang memberikan alasan kuat untuk peduli dengan TTFB.
Zack Macomber
4

Jika Anda menggunakan PHP, coba gunakan <?php flush(); ?>setelah </head>dan sebelum </body>atau bagian apa pun yang ingin Anda hasilkan dengan cepat (seperti header atau konten). Ini akan menampilkan kode sebenarnya tanpa menunggu php berakhir. Jangan gunakan fungsi ini sepanjang waktu, atau peningkatan kecepatan tidak akan terlihat.

Info lebih lanjut

Matías Pizarro
sumber