เพิ่มประสิทธิภาพเวลาในการไบต์แรก

ดูวิธีเพิ่มประสิทธิภาพให้เมตริกจำนวนวันจนถึงไบต์แรก

Time to First Byte (TTFB) เป็นเมตริกประสิทธิภาพพื้นฐานบนเว็บที่แสดงก่อนเมตริกประสบการณ์ของผู้ใช้ที่มีความหมายอื่นๆ เช่น First Contentful Paint (FCP) และ Largest Contentful Paint (LCP) ซึ่งหมายความว่าค่า TTFB ที่สูงจะเพิ่มเวลาให้กับเมตริกที่ตามมา

ขอแนะนำให้เซิร์ฟเวอร์ตอบกลับคำขอการนำทางอย่างรวดเร็วพอ เพื่อให้ผู้ใช้ในเปอร์เซ็นไทล์ที่ 75 พบ FCP อยู่ในเกณฑ์ "ดี" โดยทั่วไป เว็บไซต์ส่วนใหญ่ควรพยายามให้มี TTFB ไม่เกิน 0.8 วินาที

ค่า TTFB ที่ดีคือไม่เกิน 0.8 วินาที ค่าที่ไม่ดีควรมากกว่า 1.8 วินาที และสิ่งอื่นๆ ที่อยู่ระหว่างนั้นต้องปรับปรุง

วิธีวัด TTFB

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

PageSpeed Insights เป็นวิธีง่ายๆ ในการรับทั้งข้อมูลภาคสนามและห้องทดลองสำหรับเว็บไซต์สาธารณะที่มีอยู่ในรายงานประสบการณ์ของผู้ใช้ Chrome

TTFB สำหรับผู้ใช้จริงจะแสดงในส่วนสำรวจสิ่งที่ผู้ใช้จริงได้รับด้านบน

ข้อมูลผู้ใช้จริงของ PageSpeed Insights

ชุดย่อยของ TTFB จะแสดงในการตรวจสอบเวลาในการตอบกลับของเซิร์ฟเวอร์:

การตรวจสอบเวลาในการตอบกลับของเซิร์ฟเวอร์

หากต้องการดูวิธีอื่นๆ ในการวัดผล TTFB ทั้งในภาคสนามและในห้องทดลอง โปรดดูหน้าเมตริกของ TTFB

ทำความเข้าใจ TTFB ที่สูงด้วย Server-Timing

คุณสามารถใช้ส่วนหัวการตอบกลับ Server-Timing ในแบ็กเอนด์ของแอปพลิเคชันเพื่อวัดกระบวนการแบ็กเอนด์ที่แตกต่างกันไปซึ่งอาจทําให้เวลาในการตอบสนองสูง โครงสร้างของค่าส่วนหัวมีความยืดหยุ่น โดยต้องมีการยอมรับแฮนเดิลที่คุณกำหนดเป็นอย่างน้อย ค่าที่ไม่บังคับประกอบด้วยค่าระยะเวลา (ผ่าน dur) และรายละเอียดที่มนุษย์อ่านได้ (ผ่าน desc)

Serving-Timing ใช้ในการวัดกระบวนการแบ็กเอนด์ของแอปพลิเคชันได้มากมาย แต่มีบางอย่างที่คุณอาจต้องให้ความสำคัญเป็นพิเศษ ดังนี้

  • การค้นหาฐานข้อมูล
  • เวลาแสดงผลฝั่งเซิร์ฟเวอร์ (หากมี)
  • การกรอดิสก์
  • พบ/ไม่พบแคช Edge Server (หากใช้ CDN)

ทุกส่วนของรายการ Server-Timing คั่นด้วยเครื่องหมายโคลอน และคั่นหลายรายการได้ด้วยคอมมา ดังนี้

// Two metrics with descriptions and values
Server-Timing: db;desc="Database";dur=121.3, ssr;desc="Server-side Rendering";dur=212.2

คุณสามารถตั้งค่าส่วนหัวโดยใช้ภาษาที่ต้องการใช้ในแบ็กเอนด์ของแอปพลิเคชัน ตัวอย่างเช่น ใน PHP คุณอาจตั้งค่าส่วนหัวดังนี้

<?php
// Get a high-resolution timestamp before
// the database query is performed:
$dbReadStartTime = hrtime(true);

// Perform a database query and get results...
// ...

// Get a high-resolution timestamp after
// the database query is performed:
$dbReadEndTime = hrtime(true);

// Get the total time, converting nanoseconds to
// milliseconds (or whatever granularity you need):
$dbReadTotalTime = ($dbReadEndTime - $dbReadStarTime) / 1e+6;

// Set the Server-Timing header:
header('Server-Timing: db;desc="Database";dur=' . $dbReadTotalTime);
?>

เมื่อตั้งค่าส่วนหัวนี้แล้ว ส่วนหัวนี้จะแสดงข้อมูลที่ใช้ได้ทั้งในห้องทดลองและในช่อง

ในช่องดังกล่าว หน้าเว็บที่มีชุดส่วนหัวการตอบกลับ Server-Timing จะป้อนข้อมูลพร็อพเพอร์ตี้ serverTiming ใน Navigation Timing API

// Get the serverTiming entry for the first navigation request:
performance.getEntries("navigation")[0].serverTiming.forEach(entry => {
    // Log the server timing data:
    console.log(entry.name, entry.description, entry.duration);
});

ในห้องทดลอง ระบบจะแสดงข้อมูลจากส่วนหัวการตอบกลับ Server-Timing ในแผงเวลาของแท็บเครือข่ายในเครื่องมือสำหรับนักพัฒนาเว็บใน Chrome

ภาพค่าส่วนหัว Server-Timing ในแท็บเครือข่ายของ Chrome DevTools ในภาพนี้ ค่าส่วนหัว Server-Timing กำลังวัดว่าเซิร์ฟเวอร์ CDN Edge พบการพบแคชหรือไม่พบแคชหรือไม่ รวมถึงเวลาที่ใช้ในการเรียกทรัพยากรจาก Edge และเซิร์ฟเวอร์ต้นทาง

ส่วนหัวการตอบกลับ Server-Timing รายการที่แสดงในแท็บเครือข่ายของเครื่องมือสำหรับนักพัฒนาเว็บใน Chrome ในที่นี้ Server-Timing ใช้เพื่อวัดว่าคำขอสำหรับทรัพยากรได้เข้าสู่แคช CDN หรือไม่ และใช้เวลานานเท่าใดที่คำขอจะเข้าสู่เซิร์ฟเวอร์ Edge ของ CDN และต้นทาง

เมื่อคุณพิจารณาได้ว่าคุณมี TTFB ที่มีปัญหาโดยการวิเคราะห์ข้อมูลที่มีอยู่ คุณสามารถดำเนินการแก้ไขปัญหาต่อได้

วิธีเพิ่มประสิทธิภาพ TTFB

สิ่งที่ท้าทายที่สุดของการเพิ่มประสิทธิภาพ TTFB คือ แม้ว่าสแต็กฟรอนท์เอนด์ของเว็บจะเป็น HTML, CSS และ JavaScript เสมอ แต่สแต็กแบ็กเอนด์อาจแตกต่างกันอย่างมาก มีสแต็กแบ็กเอนด์และผลิตภัณฑ์ฐานข้อมูลมากมายที่มีเทคนิคการเพิ่มประสิทธิภาพเป็นของตัวเอง ดังนั้น คู่มือนี้จะเน้นสิ่งที่ใช้กับสถาปัตยกรรมส่วนใหญ่ แทนที่จะมุ่งเน้นคำแนะนำเฉพาะสแต็กเพียงอย่างเดียว

คำแนะนำเฉพาะแพลตฟอร์ม

แพลตฟอร์มที่คุณใช้สำหรับเว็บไซต์อาจส่งผลกระทบอย่างมากต่อ TTFB ตัวอย่างเช่น ประสิทธิภาพของ WordPress ขึ้นอยู่กับจำนวนและคุณภาพของปลั๊กอินหรือธีมที่ใช้ แพลตฟอร์มอื่นๆ จะได้รับผลกระทบที่คล้ายกันเมื่อปรับแต่งแพลตฟอร์ม คุณควรอ่านเอกสารสำหรับแพลตฟอร์มของคุณ เพื่อขอคำแนะนำเฉพาะผู้ให้บริการ เพื่อเสริมคำแนะนำด้านประสิทธิภาพโดยทั่วไปในโพสต์นี้ การตรวจสอบ Lighthouse สำหรับการลดเวลาในการตอบกลับของเซิร์ฟเวอร์จะมีคําแนะนําเฉพาะสำหรับสแต็กที่จำกัดด้วย

โฮสติ้ง, การโฮสต์, การโฮสต์

ก่อนจะลองพิจารณาวิธีการเพิ่มประสิทธิภาพอื่นๆ โฮสติ้งควรเป็นสิ่งแรกที่คุณพิจารณา ไม่มีคำแนะนำที่เฉพาะเจาะจงมากนักที่สามารถเสนอที่นี่ได้ แต่กฎทั่วไปคือ การตรวจสอบว่าโฮสต์ของเว็บไซต์สามารถจัดการการเข้าชมที่คุณส่งเข้ามาได้

โดยทั่วไปโฮสติ้งที่ใช้ร่วมกันจะทำงานช้าลง หากคุณกำลังทำเว็บไซต์ส่วนตัวขนาดเล็กซึ่งให้บริการไฟล์แบบคงที่เป็นส่วนใหญ่ เรื่องนี้ก็น่าจะเพียงพอได้ และเทคนิคการเพิ่มประสิทธิภาพบางอย่างต่อไปนี้จะช่วยให้คุณลดการทำงานของ TTFB ลงมากที่สุดเท่าที่เป็นไปได้

อย่างไรก็ตาม หากคุณกำลังใช้แอปพลิเคชันขนาดใหญ่ที่มีผู้ใช้จำนวนมากซึ่งเกี่ยวข้องกับการปรับเปลี่ยนในแบบของคุณ การค้นหาฐานข้อมูล และการดำเนินการอื่นๆ ฝั่งเซิร์ฟเวอร์ที่เข้มข้น การเลือกโฮสติ้งของคุณจะมีความสำคัญต่อการลด TTFB ลงภาคสนาม

ข้อควรระวังเมื่อเลือกผู้ให้บริการโฮสติ้งมีดังนี้

  • อินสแตนซ์ของแอปพลิเคชันมีการจัดสรรหน่วยความจำเท่าใด หากแอปพลิเคชันมีหน่วยความจำไม่เพียงพอ ระบบจะเร่งการแสดงผลและประสบปัญหาในการแสดงหน้าเว็บโดยเร็วที่สุด
  • ผู้ให้บริการโฮสติ้งให้สแต็กแบ็กเอนด์ของคุณเป็นปัจจุบันไหม เมื่อมีการเปิดตัวภาษาแบ็กเอนด์ของแอปพลิเคชัน การใช้งาน HTTP และซอฟต์แวร์ฐานข้อมูลเวอร์ชันใหม่ ประสิทธิภาพของซอฟต์แวร์ดังกล่าวจะได้รับการปรับปรุงเมื่อเวลาผ่านไป การทำงานร่วมกับผู้ให้บริการโฮสติ้งที่ให้ความสำคัญกับการบำรุงรักษาประเภทนี้เป็นสิ่งสำคัญ
  • หากมีความต้องการเฉพาะของแอปพลิเคชันและต้องการสิทธิ์เข้าถึงไฟล์การกำหนดค่าเซิร์ฟเวอร์ในระดับต่ำสุด ให้สอบถามว่าการปรับแต่งแบ็กเอนด์ของอินสแตนซ์แอปพลิเคชันของคุณเองเหมาะสมหรือไม่

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

ใช้เครือข่ายนำส่งข้อมูล (CDN)

หัวข้อการใช้ CDN เป็นหัวข้อที่ใช้งานได้ดี แต่ก็มีเหตุผลอันสมควร นั่นคือคุณอาจมีแบ็กเอนด์แอปพลิเคชันที่ได้รับการเพิ่มประสิทธิภาพมาอย่างดี แต่ผู้ใช้ที่อยู่ไกลจากเซิร์ฟเวอร์ต้นทางอาจยังประสบปัญหา TTFB สูงในการใช้งานภาคสนามอยู่

CDN ช่วยแก้ปัญหาความใกล้ชิดของผู้ใช้จากเซิร์ฟเวอร์ต้นทางได้โดยใช้เครือข่ายเซิร์ฟเวอร์แบบกระจายซึ่งจะแคชทรัพยากรในเซิร์ฟเวอร์ที่อยู่ใกล้กับผู้ใช้มากกว่า เซิร์ฟเวอร์เหล่านี้เรียกว่าเอดจ์เซิร์ฟเวอร์

ผู้ให้บริการ CDN อาจนำเสนอสิทธิประโยชน์ที่นอกเหนือจาก Edge Server ด้วย ดังนี้

  • ผู้ให้บริการ CDN มักเสนอเวลาในการแก้ไข DNS ที่รวดเร็วมาก
  • CDN มักจะแสดงเนื้อหาของคุณจาก Edge Server โดยใช้โปรโตคอลสมัยใหม่ เช่น HTTP/2 หรือ HTTP/3
  • โดยเฉพาะ HTTP/3 จะช่วยแก้ปัญหาการบล็อกบรรทัดแรกที่อยู่ใน TCP (ที่ HTTP/2 ใช้) โดยใช้โปรโตคอล UDP
  • CDN มีแนวโน้มที่จะมี TLS เวอร์ชันใหม่ๆ ด้วย ซึ่งจะช่วยลดเวลาในการตอบสนองที่เกี่ยวข้องกับเวลาในการเจรจาของ TLS โดยเฉพาะอย่างยิ่ง TLS 1.3 ได้รับการออกแบบเพื่อให้การเจรจา TLS สั้นที่สุด
  • ผู้ให้บริการ CDN บางรายมอบฟีเจอร์ที่มักเรียกว่า "EDGE Worker" ซึ่งใช้ API คล้ายกับ Service Worker API เพื่อสกัดกั้นคำขอ จัดการการตอบกลับด้วยโปรแกรมในแคชเอดจ์ หรือเขียนคำตอบใหม่ทั้งหมด
  • ผู้ให้บริการ CDN เก่งมากในการเพิ่มประสิทธิภาพเพื่อการบีบอัด การบีบอัดอาจทำได้ยากด้วยตัวเอง และอาจทำให้เวลาในการตอบสนองช้าลงในบางกรณีที่มีมาร์กอัปที่สร้างขึ้นแบบไดนามิก ซึ่งจะต้องบีบอัดทันที
  • นอกจากนี้ ผู้ให้บริการ CDN จะแคชการตอบกลับที่บีบอัดสำหรับทรัพยากรแบบคงที่โดยอัตโนมัติด้วย เพื่อให้ได้อัตราการบีบอัดและเวลาในการตอบสนองที่ดีที่สุด

แม้ว่าการใช้งาน CDN จะมีความพยายามหลายแบบ ตั้งแต่เรื่องเล็กๆ ไปจนถึงเรื่องสำคัญ แต่การเพิ่มประสิทธิภาพ TTFB ควรมีความสำคัญอย่างยิ่งหากเว็บไซต์ของคุณยังไม่ได้ใช้งาน

ใช้เนื้อหาที่แคชไว้หากเป็นไปได้

CDN ช่วยให้สามารถแคชเนื้อหาไว้ใน Edge Server ซึ่งอยู่ใกล้กับผู้เข้าชมมากกว่า ในกรณีที่เนื้อหาได้รับการกำหนดค่าด้วยส่วนหัว HTTP Cache-Control ที่เหมาะสม แม้จะไม่เหมาะสมสำหรับเนื้อหาที่ปรับเปลี่ยนให้เหมาะกับแต่ละบุคคล แต่การต้องเดินทางกลับไปที่ต้นทางจนสุดอาจทำให้มูลค่าของ CDN ลดลงได้

สำหรับเว็บไซต์ที่อัปเดตเนื้อหาบ่อยๆ แม้จะใช้เวลาแคชเพียงเล็กน้อยก็อาจทำให้ประสิทธิภาพการทำงานของเว็บไซต์ที่ยุ่งเหยิงอย่างเห็นได้ชัด เนื่องจากมีเพียงผู้เข้าชมคนแรกเท่านั้นที่จะมีเวลาในการตอบสนองอย่างสมบูรณ์กลับไปยังเซิร์ฟเวอร์ต้นทาง ในขณะที่ผู้เข้าชมรายอื่นๆ ทั้งหมดจะนำทรัพยากรที่แคชไว้จากเซิร์ฟเวอร์ Edge Server มาใช้ซ้ำได้ CDN บางแห่งอนุญาตให้แคชเป็นโมฆะในเวอร์ชันเว็บไซต์ ซึ่งช่วยให้ใช้ประโยชน์จากทั้ง 2 ด้านได้ คือใช้เวลาแคชนาน แต่มีการอัปเดตทันทีเมื่อจำเป็น

แม้ว่าการแคชจะได้รับการกำหนดค่าอย่างถูกต้อง แต่สามารถใช้พารามิเตอร์สตริงคำค้นหาที่ไม่ซ้ำกันสำหรับการวัดการวิเคราะห์ได้ เนื้อหาเหล่านี้อาจดูเหมือนเนื้อหาที่แตกต่างกันใน CDN แม้จะเหมือนกันก็ตาม ดังนั้นระบบจะไม่ใช้เวอร์ชันที่แคชไว้

นอกจากนี้ ระบบอาจไม่แคชเนื้อหาเก่าหรือที่มีการเข้าชมน้อย ซึ่งอาจส่งผลให้ค่า TTFB ในบางหน้าสูงกว่าหน้าอื่นๆ การเพิ่มเวลาแคชสามารถลดผลกระทบจากปัญหานี้ได้ แต่โปรดทราบว่าการแคชมากขึ้นจะเพิ่มความเป็นไปได้ในการแสดงเนื้อหาที่อาจไม่มีการอัปเดต

ผลกระทบของเนื้อหาที่แคชไว้จะไม่ได้ส่งผลต่อแอปที่ใช้ CDN เท่านั้น โครงสร้างพื้นฐานของเซิร์ฟเวอร์อาจต้องสร้างเนื้อหาจากการค้นหาฐานข้อมูลที่มีค่าใช้จ่ายสูงเมื่อไม่สามารถนำเนื้อหาที่แคชไว้มาใช้ซ้ำได้ ข้อมูลที่เข้าถึงบ่อยหรือหน้าที่แคชไว้ล่วงหน้ามักจะทำงานได้ดีกว่า

หลีกเลี่ยงการเปลี่ยนเส้นทางหลายหน้า

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

การเปลี่ยนเส้นทางมี 2 ประเภท ได้แก่

  • การเปลี่ยนเส้นทางจากต้นทางเดียวกัน ซึ่งการเปลี่ยนเส้นทางจะเกิดขึ้นในเว็บไซต์โดยสมบูรณ์
  • การเปลี่ยนเส้นทางข้ามต้นทาง ซึ่งการเปลี่ยนเส้นทางจะเกิดขึ้นครั้งแรกในต้นทางอื่น เช่น จากบริการย่อ URL ของโซเชียลมีเดีย เช่น ก่อนที่จะมาถึงเว็บไซต์ของคุณ

คุณต้องการมุ่งเน้นที่การกำจัดการเปลี่ยนเส้นทางต้นทางเดียวกัน เนื่องจากวิธีนี้เป็นสิ่งที่คุณสามารถควบคุมได้โดยตรง ซึ่งรวมถึงการตรวจสอบลิงก์ในเว็บไซต์ของคุณเพื่อดูว่ามีลิงก์ใดส่งผลให้เกิดโค้ดตอบกลับ 302 หรือ 301 หรือไม่ ซึ่งมักเป็นผลมาจากการไม่ระบุรูปแบบ https:// (ดังนั้นเบราว์เซอร์จะใช้ค่าเริ่มต้นเป็น http:// ซึ่งจะเปลี่ยนเส้นทาง) หรือเนื่องจากไม่มีการรวมหรือยกเว้นเครื่องหมายทับต่อท้ายใน URL อย่างเหมาะสม

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

แหล่งที่มาสำคัญอีกประการของเวลาในการเปลี่ยนเส้นทางอาจมาจากการเปลี่ยนเส้นทางแบบ HTTP-to-HTTPS วิธีหนึ่งที่คุณสามารถหลีกเลี่ยงได้คือการใช้ส่วนหัว Strict-Transport-Security (HSTS) ซึ่งจะบังคับใช้ HTTPS ในการเข้าชมต้นทางครั้งแรก จากนั้นจะบอกให้เบราว์เซอร์เข้าถึงต้นทางทันทีผ่านรูปแบบ HTTPS สำหรับการเข้าชมในอนาคต

เมื่อมีนโยบาย HSTS ที่ดีแล้ว คุณจะเร่งการดำเนินการต่างๆ ได้เร็วขึ้นเมื่อเข้าชมต้นทางครั้งแรกโดยการเพิ่มเว็บไซต์ลงในรายการโหลดล่วงหน้าของ HSTS

มาร์กอัปสตรีมไปยังเบราว์เซอร์

เบราว์เซอร์จะได้รับการเพิ่มประสิทธิภาพให้ประมวลผลมาร์กอัปได้อย่างมีประสิทธิภาพเมื่อมีการสตรีม ซึ่งหมายความว่ามาร์กอัปจะได้รับการจัดการเป็นส่วนๆ เมื่อมาจากเซิร์ฟเวอร์ วิธีนี้สำคัญมากสำหรับความกังวลเกี่ยวกับเพย์โหลดของมาร์กอัปขนาดใหญ่ เนื่องจากเบราว์เซอร์จะแยกวิเคราะห์ส่วนที่เป็นส่วนๆ ของมาร์กอัปได้ทีละส่วน แทนการรอให้มีการตอบสนองทั้งหมดก่อนที่จะเริ่มการแยกวิเคราะห์

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

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

อีกวิธีหนึ่งในการตรวจสอบว่ามาร์กอัปได้รับการสตรีมไปยังเบราว์เซอร์อย่างรวดเร็วคือการใช้การแสดงผลแบบคงที่ ซึ่งจะสร้างไฟล์ HTML ระหว่างการสร้าง เมื่อไฟล์เต็มพร้อมใช้งานทันที เว็บเซิร์ฟเวอร์จะเริ่มส่งไฟล์ได้ทันที และลักษณะที่เป็นธรรมชาติของ HTTP จะส่งผลให้เกิดการมาร์กอัปสตรีมมิง แม้ว่าวิธีนี้จะไม่ได้เหมาะกับทุกหน้าของทุกเว็บไซต์ เช่น หน้าเว็บที่ต้องตอบสนองแบบไดนามิกโดยเป็นส่วนหนึ่งของประสบการณ์ของผู้ใช้ แต่อาจมีประโยชน์สำหรับหน้าเว็บที่ไม่จำเป็นต้องใช้มาร์กอัปในการปรับตามโปรไฟล์ของผู้ใช้ที่เฉพาะเจาะจง

ใช้ Service Worker

Service Worker API อาจมีผลกระทบอย่างมากต่อ TTFB ทั้งสำหรับเอกสารและทรัพยากรที่โหลด เนื่องจากโปรแกรมทำงานของบริการจะทำหน้าที่เป็นพร็อกซีระหว่างเบราว์เซอร์และเซิร์ฟเวอร์ แต่โปรแกรมดังกล่าวจะส่งผลต่อ TTFB ของเว็บไซต์หรือไม่ ขึ้นอยู่กับวิธีตั้งค่าโปรแกรมทำงานของบริการและการตั้งค่านั้นสอดคล้องกับข้อกำหนดแอปพลิเคชันของคุณหรือไม่

  • ใช้กลยุทธ์ "ไม่มีอัปเดตขณะตรวจสอบใหม่" สำหรับชิ้นงาน หากเนื้อหาอยู่ในแคชของ Service Worker ไม่ว่าจะเป็นเอกสารหรือทรัพยากรที่เอกสารต้องใช้ กลยุทธ์ที่ไม่มีการอัปเดตขณะตรวจสอบใหม่จะให้บริการทรัพยากรนั้นจากแคชก่อน จากนั้นจะดาวน์โหลดเนื้อหานั้นในเบื้องหลังและแสดงจากแคชสำหรับการโต้ตอบในอนาคต
    • หากคุณมีทรัพยากรของเอกสารที่ไม่มีการเปลี่ยนแปลงบ่อยนัก การใช้กลยุทธ์ที่ไม่มีการอัปเดตขณะตรวจสอบใหม่อาจทำให้ TTFB ของหน้าเว็บหายไปได้เกือบทันที อย่างไรก็ตาม การดำเนินการนี้จะไม่ค่อยได้ผลหากเว็บไซต์ของคุณส่งมาร์กอัปที่สร้างขึ้นแบบไดนามิก เช่น มาร์กอัปที่มีการเปลี่ยนแปลงตามการตรวจสอบสิทธิ์ผู้ใช้ ในกรณีดังกล่าว คุณจะต้องเปิดใช้เครือข่ายก่อนเสมอเพื่อให้เอกสารมีความใหม่ที่สุดเท่าที่จะเป็นไปได้
    • หากเอกสารโหลดทรัพยากรที่ไม่สำคัญซึ่งมีการเปลี่ยนแปลงตามความถี่ในระดับหนึ่ง แต่การดึงข้อมูลทรัพยากรที่ไม่มีอัปเดตจะไม่ส่งผลกระทบอย่างมากต่อประสบการณ์ของผู้ใช้ เช่น รูปภาพที่เลือกหรือทรัพยากรอื่นๆ ที่ไม่สำคัญ TTFB สำหรับทรัพยากรเหล่านั้นอาจลดลงได้มากโดยใช้กลยุทธ์ "เก่าขณะตรวจสอบใหม่"
  • หากเป็นไปได้ ให้ใช้สถาปัตยกรรมของผู้ปฏิบัติงานบริการสตรีมมิง สถาปัตยกรรม Service Worker นี้ใช้วิธีการจัดเก็บส่วนต่างๆ ของทรัพยากรเอกสารไว้ในแคชของ Service Worker แล้วรวมกับบางส่วนของเนื้อหาในระหว่างส่งคำขอการนำทาง ผลของการใช้รูปแบบของ Service Worker นี้คือการนำทางจะค่อนข้างเร็ว โดยจะมีการดาวน์โหลดเพย์โหลด HTML ที่เล็กลงจากเครือข่าย แม้ว่ารูปแบบของโปรแกรมทำงานของบริการนี้จะใช้ไม่ได้กับบางเว็บไซต์ แต่เวลา TTFB สำหรับทรัพยากรเอกสารอาจจะเป็นแบบนั้นได้ทันทีสำหรับเว็บไซต์ที่ใช้งาน
  • ใช้โมเดล App Shell สำหรับแอปพลิเคชันที่แสดงผลโดยไคลเอ็นต์ โมเดลนี้เหมาะกับ SPA ที่สามารถแสดง "เชลล์" ของหน้าเว็บจากแคชของ Service Worker ได้ทันที และเนื้อหาแบบไดนามิกของหน้าเว็บจะถูกเติมและแสดงผลในวงจรของหน้าในภายหลัง

ใช้ 103 Early Hints สำหรับทรัพยากรที่สำคัญในการแสดงผล

ไม่ว่าแบ็กเอนด์ของแอปพลิเคชันของคุณจะมีประสิทธิภาพเพียงใด ก็ยังมีงานที่เซิร์ฟเวอร์ต้องทำอีกมากเพื่อเตรียมการตอบสนอง ซึ่งรวมถึงงานฐานข้อมูลที่มีราคาแพง (แต่จำเป็น) ซึ่งทำให้การตอบสนองการนำทางไปถึงล่าช้าที่สุดเท่าที่จะทำได้ ผลกระทบที่อาจเกิดขึ้นจากการดำเนินการนี้คือทรัพยากรที่สำคัญในการแสดงผลที่ตามมาอาจล่าช้า เช่น CSS หรือในบางกรณี JavaScript ที่แสดงผลมาร์กอัปในไคลเอ็นต์

ส่วนหัว 103 Early Hints คือโค้ดตอบกลับล่วงหน้าที่เซิร์ฟเวอร์ส่งไปยังเบราว์เซอร์ได้ขณะที่แบ็กเอนด์ไม่ว่างในการเตรียมมาร์กอัป ส่วนหัวนี้สามารถใช้เพื่อบอกเบราว์เซอร์ว่ามีทรัพยากรที่สำคัญในการแสดงผล ซึ่งหน้าเว็บควรเริ่มดาวน์โหลดขณะที่กำลังเตรียมมาร์กอัป เพื่อให้เบราว์เซอร์ที่รองรับแสดงผลเอกสาร (CSS) ได้เร็วขึ้นและความพร้อมใช้งานของฟังก์ชันหลัก (JavaScript) ของหน้าเว็บก็เร็วขึ้น

บทสรุป

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

เช่นเดียวกับการเพิ่มประสิทธิภาพทุกเมตริก แนวทางส่วนใหญ่ก็คล้ายคลึงกัน นั่นคือ วัด TTFB ของคุณภาคสนาม ใช้เครื่องมือห้องทดลองเพื่อเจาะลึกลงไปถึงสาเหตุ และใช้การเพิ่มประสิทธิภาพหากทำได้ เทคนิคบางอย่างอาจใช้ไม่ได้กับสถานการณ์ของคุณ แต่บางเทคนิคก็อาจได้ผล คุณจะต้องคอยดูข้อมูลภาคสนามอย่างใกล้ชิด และทำการปรับเปลี่ยนตามความจำเป็นเพื่อให้ผู้ใช้ได้รับประสบการณ์ที่ดีที่สุด

รูปภาพหลักโดย Taylor Vick มาจาก UnSplash