ฉันจะลดเวลารอ (ttfb) ได้อย่างไร


114

ฉันมีแบบสอบถามที่เกี่ยวข้องกับการรับรายชื่อผู้ใช้จากตารางตามลำดับที่จัดเรียงตามเวลาที่สร้างขึ้น ฉันได้รับแผนภาพเวลาต่อไปนี้จากเครื่องมือสำหรับนักพัฒนาของ Chrome

เวลาจากโครเมี่ยม

คุณจะเห็นว่า TTFB (เวลาถึงไบต์แรก) สูงเกินไป
ไม่แน่ใจว่าเป็นเพราะ SQL sort หรือเปล่า ถ้าเป็นอย่างนั้นฉันจะลดเวลานี้ได้อย่างไร?
หรือว่าเป็นเพราะ TTFB. ฉันเห็นบล็อกที่ระบุว่า TTFB ควรน้อยลง (<1 วินาที) แต่สำหรับฉันมันแสดงให้เห็น> 1 วินาที เป็นเพราะคำถามของฉันหรืออย่างอื่น?
ฉันไม่แน่ใจว่าจะลดเวลานี้ได้อย่างไร
ฉันใช้เชิงมุม ฉันควรใช้เชิงมุมเพื่อจัดเรียงตารางแทนการจัดเรียง SQL หรือไม่ (หลายกระทู้บอกว่าไม่น่าจะเป็นประเด็น)
สิ่งที่อยากรู้คือจะลด TTFB ได้อย่างไร พวก! ฉันยังใหม่กับเรื่องนี้จริงๆ เป็นงานที่สมาชิกในทีมมอบให้กับฉัน ฉันไม่แน่ใจว่าจะลดเวลา TTFB ได้อย่างไร ผมเห็นหลาย ๆ กระทู้ แต่เข้าใจไม่ถูก TTFB คืออะไร เป็นเวลาของเซิร์ฟเวอร์หรือไม่?


8
คำถามของคุณแสดงให้เห็นถึงความไม่เข้าใจว่าเกิดอะไรขึ้นที่นี่ นี่เป็นเวลาที่รอสำหรับเซิร์ฟเวอร์ดังนั้นไม่ว่าคุณจะใช้ AngularJS หรือเฟรมเวิร์กอื่น ๆ ก็ไม่เกี่ยวข้อง หากคุณต้องการปรับปรุงโค้ดฝั่งเซิร์ฟเวอร์คุณต้องแสดงรหัสให้เราเห็น
dirkk

@govindpatel หากคำตอบของฉันด้านล่างช่วยคุณได้หรือคุณคิดว่ามันตอบคำถามได้โปรดทำเครื่องหมายเป็นคำตอบที่ถูกต้อง;)
Daniel T. Sobrosa

สำหรับการจัดเรียงตารางอย่างง่าย (สมมติว่ามีการดึงข้อมูลตารางแล้วและคุณเพียงแค่ใช้ข้อมูลโดยใช้คุณสมบัติอื่น) การทำในฝั่งไคลเอ็นต์จะเร็วกว่าการส่งคำขออื่นสำหรับข้อมูลที่เรียงลำดับ
Richik SC

คำตอบ:


116

TTFB ไม่ใช่เวลาในไบต์แรกของเนื้อหาของการตอบสนอง (กล่าวคือข้อมูลที่มีประโยชน์เช่น: json, xml เป็นต้น) แต่เป็นเวลาในการตอบสนองที่ได้รับจากเซิร์ฟเวอร์เป็นไบต์แรก ไบต์นี้เป็นจุดเริ่มต้นของส่วนหัวการตอบกลับ

ตัวอย่างเช่นหากเซิร์ฟเวอร์ส่งส่วนหัวก่อนที่จะทำงานหนัก (เช่น SQL จำนวนมาก) คุณจะได้รับ TTFB ที่ต่ำมาก แต่ไม่ใช่ "จริง"

ในกรณีของคุณ TTFB แสดงถึงเวลาที่คุณใช้ในการประมวลผลข้อมูลบนเซิร์ฟเวอร์

เพื่อลด TTFB คุณต้องทำงานฝั่งเซิร์ฟเวอร์ให้เร็วขึ้น


2
ในการวิเคราะห์การกำหนดเวลาที่เกิดขึ้นระหว่าง TTFB เพิ่มเติมคุณสามารถใช้วิธีการจับเวลาฝั่งเซิร์ฟเวอร์ (เช่นตัวจับเวลาการตั้งค่าหรือบันทึกการแก้ไขข้อบกพร่อง) เพื่อแก้จุดบกพร่องเวลาที่ใช้ในแต่ละตรรกะ
Raptor

1
ดูบทความนี้ซึ่งจะอธิบายปัญหาโดยละเอียดและให้คำแนะนำสำหรับแนวทางแก้ไขที่เป็นไปได้: websiteoptimization.com/speed/tweak/time-to-first-byte
LucaM

ระวังการปฏิบัติต่อ TTFB เป็นจุดสำคัญที่สุด: blog.cloudflare.com/…
Owen Blacker

หากคำตอบนี้ช่วยคุณได้ @govindpatel โปรดทำเครื่องหมายว่าเป็นคำตอบที่ถูกต้อง)
Daniel T. Sobrosa

16

ฉันได้พบกับปัญหาเดียวกัน โครงการของฉันกำลังทำงานบนเซิร์ฟเวอร์ภายใน ฉันตรวจสอบรหัส php ของฉัน

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

ฉันใช้localhostเพื่อเชื่อมต่อกับฐานข้อมูลในเครื่องของฉัน นั่นอาจเป็นสาเหตุของปัญหาที่คุณกำลังอธิบาย คุณสามารถแก้ไขHOSTSไฟล์ของคุณ เพิ่มบรรทัด

127.0.0.1 localhost.


5
ขอบคุณ. ฉันเปลี่ยนlocalhost(TTFB: 1s) เป็น127.0.0.1(TTFB: 12ms)
Mr. Black

ในกรณีของฉันคำตอบนี้ก็ช่วยได้เช่นกัน: TTFB 2,39 s -> TTFB 110 ms ทำไมบางคนถึงโหวตลง?
Martin Pabst

ฉันคิดว่ามันได้รับการแก้ไขสำหรับแอปพลิเคชัน Spring-Boot ของฉันฉันใช้ฐานข้อมูล Postgres ใน Docker-Container TTFB นานถึง 10 วินาทีตอนนี้เหลือเพียง 40ms :)
Sepultura

เหตุใด "localhost" จึงใช้เวลานานกว่ามาก
ฉาย

14

TTFB คือสิ่งที่เกิดขึ้นเบื้องหลัง เบราว์เซอร์ของคุณไม่รู้อะไรเลยเกี่ยวกับสิ่งที่เกิดขึ้นเบื้องหลัง

คุณต้องตรวจสอบว่ามีการเรียกใช้แบบสอบถามใดและเว็บไซต์เชื่อมต่อกับเซิร์ฟเวอร์อย่างไร

นี้บทความอาจช่วยให้เข้าใจ TTFB แต่มิฉะนั้นคุณต้องขุดลึกลงไปในใบสมัครของคุณ


4

ฉันขอแนะนำให้คุณอ่านบทความนี้และมุ่งเน้นเพิ่มเติมเกี่ยวกับวิธีเพิ่มประสิทธิภาพการตอบสนองโดยรวมต่อคำขอของผู้ใช้ (ทั้งหน้าผลการค้นหา ฯลฯ )

ข้อโต้แย้งที่ดีสำหรับนี่คือตัวอย่างที่พวกเขาให้เกี่ยวกับการใช้ gzip เพื่อบีบอัดหน้า แม้ว่า ttfb จะเร็วกว่าเมื่อคุณไม่ได้บีบอัด แต่ประสบการณ์โดยรวมของผู้ใช้จะแย่ที่สุดเนื่องจากใช้เวลานานกว่าในการดาวน์โหลดเนื้อหาที่ไม่ได้บีบอัด


อย่าลืมดูส่วนความคิดเห็นของบทความนั้น หลายคนให้เหตุผลที่น่าสนใจที่จะเกี่ยวข้องกับ TTFB
Zack Macomber

4

หากคุณใช้ PHP ให้ลองใช้<?php flush(); ?>after </head>and before </body>หรือส่วนใดก็ได้ที่คุณต้องการให้แสดงผลอย่างรวดเร็ว (เช่นส่วนหัวหรือเนื้อหา) มันจะส่งออกโค้ดจริงโดยไม่ต้องรอให้ php สิ้นสุด อย่าใช้ฟังก์ชันนี้ตลอดเวลามิฉะนั้นการเพิ่มความเร็วจะไม่สามารถสังเกตเห็นได้

ข้อมูลเพิ่มเติม

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.