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

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

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

0.5%

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

2%

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

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

ที่มา

แท็กผู้เผยแพร่โฆษณาผ่าน Google (GPT) เป็นสคริปต์การติดแท็กโฆษณาสำหรับ Google Ad Manager ที่ขอและแสดงโฆษณาแบบดิสเพลย์บนเว็บ การใช้ส่วนหัว HTTP แบบง่ายของ stale-while-revalidate สำหรับ GPT ช่วยให้ทีม GPT ปรับปรุงความเร็วและประสิทธิภาพของโฆษณา Display ของ 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 สัปดาห์ของเมตริกที่บันทึกจากการแสดงผลโฆษณาแบบดิสเพลย์ของ Google ในขนาดตัวอย่าง 5.2 พันล้านครั้ง กลุ่มควบคุมสังเกตเห็นสิ่งต่อไปนี้

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

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

การใช้ฟีเจอร์ "ไม่มีอัปเดตขณะตรวจสอบใหม่" ในเว็บไซต์

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

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