Google ปรับปรุงประสิทธิภาพโฆษณาด้วยข้อมูลที่ไม่อัปเดตขณะตรวจสอบใหม่ได้อย่างไร

มาดูกันว่าการโหลดทรัพยากรของบุคคลที่สามให้เร็วขึ้นช่วยเพิ่มรายได้ได้อย่างไร

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

0.5%

การเพิ่มรายได้สำหรับผู้เผยแพร่โฆษณา

2%

การโหลดสคริปต์โฆษณาในช่วงต้นเพิ่มขึ้น

แหล่งที่มา: ข้อมูลภายในของ Google มิถุนายนถึงกรกฎาคม 2019

ข้อมูลเบื้องต้น

แท็กผู้เผยแพร่โฆษณาผ่าน Google (GPT) เป็นสคริปต์การติดแท็กโฆษณาสำหรับ Google Ad Manager ที่ขอและแสดงโฆษณา Display บนเว็บ การนำส่วนหัว HTTP ของ stale-while-revalidate แบบง่ายมาใช้กับ GPT ทำให้ทีม GPT สามารถปรับปรุงความเร็วและประสิทธิภาพของโฆษณาแบบดิสเพลย์ของ Google สำหรับพาร์ทเนอร์ผู้เผยแพร่โฆษณา เทคนิคเดียวกันนี้สามารถใช้ได้กับสถานการณ์อื่นๆ ที่การโหลดสคริปต์ให้เร็วที่สุดมีความสำคัญมากกว่าการโหลดโค้ดใหม่ล่าสุด

ปัญหา

มีการปรับใช้ GPT เป็นสคริปต์ Bootstrapping ชื่อ gpt.js ซึ่งมีเวลาในการเผยแพร่ (TTL) สั้นๆ 15 นาที TTL แบบย่อนี้ช่วยให้อัปเดตหรือย้อนกลับสคริปต์ได้อย่างรวดเร็ว เมื่อโหลดแล้ว gpt.js จะส่งคำขอและโหลดสคริปต์การใช้งานเพิ่มเติม ซึ่งมี TTL ขนาดยาว

เมื่อ TTL 15 นาทีหมดอายุ เวอร์ชันของ gpt.js ในแคชจะล้าสมัยและต้องมีการตรวจสอบความถูกต้องอีกครั้ง ก่อนหน้านี้ กระบวนการตรวจสอบซ้ำนี้จะเกี่ยวกับการส่งคำขอเครือข่ายแบบซิงโครนัสเพื่อดึงสำเนาสคริปต์ใหม่ ทำให้ต้องใช้เวลาในการตอบสนองกับคำขอโฆษณาแรก

การแก้ปัญหา

ส่วนหัว Cache-Control ใช้แอตทริบิวต์ stale-while-revalidate และกำหนดกรอบเวลาเพิ่มเติมในช่วงที่แคชสามารถใช้เนื้อหาที่ไม่มีอัปเดตในขณะที่ระบบตรวจสอบชิ้นงานใหม่แบบไม่พร้อมกัน วิธีนี้จะช่วยให้นักพัฒนาซอฟต์แวร์รักษาสมดุลระหว่างความเร่งด่วนระหว่างการโหลดเนื้อหาที่แคชไว้ทันทีกับ ความใหม่ — เพื่อให้มั่นใจว่าจะมีการใช้การอัปเดตสำหรับเนื้อหาที่แคชไว้ในอนาคต

กรณีศึกษาเกี่ยวกับโฆษณา Display ของ Google

ทีม GPT ได้เพิ่มส่วนหัว Cache-Control นี้ในการตอบสนอง HTTP ของ gpt.js ในปี 2016 ซึ่งคาดว่าเบราว์เซอร์ที่ใช้ stale-while-revalidate มีดังต่อไปนี้

cache-control: private, max-age=900, stale-while-revalidate=3600

การตั้งค่านี้หมายความว่าหากมีการขอ gpt.js ในช่วง 15-60 นาทีหลังจากค่าที่แคชไว้ก่อนหน้า ระบบจะใช้ค่าที่แคชไว้ในการดำเนินการตามคำขอ แม้ว่าจะไม่มีอัปเดตแล้วก็ตาม ในขณะเดียวกัน จะมีการส่งคำขอตรวจสอบอีกครั้งในเบื้องหลังเพื่อเติมค่าแคชใหม่เพื่อใช้ในอนาคต

Chrome ได้เปิดตัว stale-while-revalidate ในเวอร์ชัน 75 ถึง 99% ของการเข้าชมทั้งหมด โดยเหลือการเข้าชม 1% ที่ปิดใช้ฟีเจอร์นี้ชั่วคราวเพื่อวัดผลกระทบ ทีม GPT บันทึกเมตริกจาก 1% นี้ (กลุ่มทดสอบ) และตัวอย่าง 1% ของการเข้าชมที่มีการเปิดใช้ฟีเจอร์ (กลุ่มควบคุม) เพื่อทดสอบประสิทธิภาพของ stale-while-revalidate สำหรับสคริปต์โฆษณา กลุ่มควบคุมได้สังเกตข้อมูลต่อไปนี้ในช่วง 2 สัปดาห์ของเมตริกที่บันทึกจากขนาดการสุ่มตัวอย่าง 5.2 พันล้านครั้งของการแสดงโฆษณา Display ของ Google

  • การแสดงโฆษณาเพิ่มขึ้น 0.3%
  • รายได้เพิ่มขึ้น 0.5%
  • การโหลดสคริปต์โฆษณาล่วงหน้าเพิ่มขึ้น 2% (<500 มิลลิวินาทีนับจากเริ่มโหลดหน้าเว็บ)
  • การโหลดสคริปต์โฆษณาที่ประสบความสำเร็จเพิ่มขึ้น 1.1% โดยรวม
จุดเปอร์เซ็นต์ที่เปลี่ยนแปลงของจำนวนการโหลดสคริปต์โฆษณาเทียบกับเวลาตั้งแต่เริ่มโหลดหน้าเว็บจนถึงโหลดสคริปต์โฆษณา (มิลลิวินาที)
แหล่งที่มา: ข้อมูลภายในของ Google มิถุนายน - กรกฎาคม 2019

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

การติดตั้งที่ไม่มีการอัปเดตขณะตรวจสอบความถูกต้องอีกครั้งบนเว็บไซต์ของคุณ

ทีม GPT พบว่าการเปลี่ยนแปลงส่วนหัว HTTP ที่ค่อนข้างง่ายด้วย stale-while-revalidate จะช่วยเพิ่มความเร็วและกระตุ้นเมตริกธุรกิจได้ อ่านโพสต์อัปเดตสิ่งใหม่ๆ ด้วยการอัปเดตที่ไม่มีการอัปเดตในระหว่างตรวจสอบเพื่อดูข้อมูลเพิ่มเติมเกี่ยวกับการติดตั้งใช้งาน stale-while-revalidate ในเว็บไซต์ของคุณ

รูปภาพโดย Kahica บน Unsplash