คู่มือการเพิ่มประสิทธิภาพ

คู่มือนี้จะอธิบายกลยุทธ์ต่างๆ ในการเพิ่มประสิทธิภาพการใช้งาน Google Maps API ในแง่ของความปลอดภัย การทำงาน และการใช้งาน

ความปลอดภัย

การตรวจสอบแนวทางปฏิบัติแนะนำด้านความปลอดภัย

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

การใช้คีย์ API เพื่อเข้าถึง Maps API

คีย์ API เป็นวิธีการตรวจสอบสิทธิ์ที่แนะนำให้ใช้ในการเข้าถึง API ของ Google Maps API แม้ว่าจะยังรองรับการใช้รหัสไคลเอ็นต์ในขณะนี้ แต่คีย์ API จะรองรับการควบคุมความปลอดภัยแบบละเอียดและสามารถปรับแต่งให้ใช้งานได้กับที่อยู่เว็บ, ที่อยู่ IP และ SDK อุปกรณ์เคลื่อนที่ (Android และ iOS) ที่เฉพาะเจาะจงได้ ดูข้อมูลเกี่ยวกับการสร้างและรักษาความปลอดภัยให้กับคีย์ API ได้ที่หน้า "การใช้คีย์ API" สำหรับ API หรือ SDK แต่ละรายการ (ตัวอย่างเช่น สำหรับ Maps JavaScript API ให้ไปที่หน้าเกี่ยวกับการใช้คีย์ API)

การแสดง

ใช้ Exponential Backoff เพื่อจัดการข้อผิดพลาด

หากแอปพบข้อผิดพลาดจากการพยายามเรียก API หลายครั้งเกินไปภายในระยะเวลาสั้นๆ เช่น ข้อผิดพลาด QPS ให้พิจารณาใช้ Exponential Backoff เพื่อให้คำขอประมวลผลได้

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

โดยเฉพาะอย่างยิ่ง ให้ปรับความเร็วในการค้นหา เพิ่มระยะเวลารอ S วินาทีระหว่างคำค้นหาแต่ละครั้งในโค้ด หากการค้นหายังคงได้ผลลัพธ์เป็นข้อผิดพลาด QPS ให้เพิ่มระยะเวลาการรอ 2 เท่าแล้วจึงส่งคำค้นหาอีกครั้ง ปรับระยะเวลาการรอต่อไปจนกว่าการค้นหาจะแสดงผลโดยไม่มีข้อผิดพลาด

การส่งคำขอการโต้ตอบของผู้ใช้ตามคำขอ

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

การหลีกเลี่ยงการแสดงเนื้อหาซ้อนทับเมื่อแผนที่เคลื่อนที่

หลีกเลี่ยงการใช้ Draw() เพื่อแสดงเนื้อหาซ้อนทับที่กำหนดเองบนแผนที่ในช่วงเวลาเดียวกับที่ผู้ใช้อาจกำลังเลื่อนแผนที่ เนื่องจากแผนที่จะถูกวาดใหม่ทุกครั้งที่ผู้ใช้เลื่อนแผนที่ การวางเนื้อหาซ้อนทับบนแผนที่พร้อมๆ กันอาจทำให้มีความล่าช้าหรืออาการกระตุกจากภาพ เพิ่มหรือนำเนื้อหาวางซ้อนออกจากแผนที่เมื่อผู้ใช้หยุดเลื่อนหรือซูมเท่านั้น

หลีกเลี่ยงการดำเนินการแบบหนักใน Draw วิธี

ตามกฎทั่วไป แนวทางปฏิบัติที่ดีคือให้หลีกเลี่ยงการดำเนินการที่ไม่เน้นที่ประสิทธิภาพซึ่งมีประสิทธิภาพสูงในเมธอด Draw() ตัวอย่างเช่น ให้หลีกเลี่ยงข้อผิดพลาดต่อไปนี้ในโค้ดเมธอด Draw()

  • การค้นหาที่แสดงเนื้อหาจำนวนมาก
  • ข้อมูลที่แสดงมีการเปลี่ยนแปลงหลายอย่าง
  • การควบคุมองค์ประกอบ Document Object Model (DOM) หลายรายการ

การดำเนินการเหล่านี้อาจชะลอประสิทธิภาพและทำให้เกิดการล่าช้าหรือภาพที่กระตุกเมื่อแผนที่แสดงผล

การใช้ภาพแรสเตอร์เป็นเครื่องหมาย

ใช้รูปภาพแรสเตอร์ เช่น รูปภาพในรูปแบบ .PNG หรือ .JPG เมื่อเพิ่มเครื่องหมายเพื่อระบุตำแหน่งบนแผนที่ หลีกเลี่ยงการใช้ภาพกราฟิกเวกเตอร์ที่รองรับการปรับขนาด (Scalable Vector Graphics หรือ SVG) เนื่องจากการแสดงผลภาพ SVG อาจทำให้เกิดการหน่วงเวลาเมื่อแผนที่ถูกวาดใหม่

เครื่องหมายการเพิ่มประสิทธิภาพ

การเพิ่มประสิทธิภาพช่วยเพิ่มประสิทธิภาพโดยการแสดงผลตัวทำเครื่องหมายหลายรายการเป็นองค์ประกอบแบบคงที่รายการเดียว ซึ่งจะมีประโยชน์ในกรณีที่ต้องใช้เครื่องหมายจำนวนมาก โดยค่าเริ่มต้น Maps JavaScript API จะตัดสินใจว่าจะเพิ่มประสิทธิภาพเครื่องหมายหรือไม่ เมื่อมีเครื่องหมายจำนวนมาก Maps JavaScript API จะพยายามแสดงเครื่องหมายด้วยการเพิ่มประสิทธิภาพ ตัวทำเครื่องหมายบางตัวไม่สามารถเพิ่มประสิทธิภาพได้ ในบางสถานการณ์ Maps JavaScript API อาจต้องแสดงผลเครื่องหมายโดยไม่มีการเพิ่มประสิทธิภาพ ปิดใช้การแสดงผลที่มีการเพิ่มประสิทธิภาพสำหรับ GIF หรือ PNG แบบเคลื่อนไหว หรือเมื่อต้องแสดงผลเครื่องหมายแต่ละรายการเป็นองค์ประกอบ DOM ที่แยกกัน

การสร้างคลัสเตอร์เพื่อจัดการการแสดงเครื่องหมาย

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

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

การรับชม

หากต้องการวางแผนงบประมาณและควบคุมค่าใช้จ่าย ให้ทำดังนี้

  • ตั้งค่าการแจ้งเตือนงบประมาณ เพื่อติดตามว่าค่าใช้จ่ายของคุณเพิ่มขึ้นอย่างไรในจำนวนเงินหนึ่งๆ การตั้งค่างบประมาณไม่จำกัดการใช้ API แต่จะแจ้งเตือนเมื่อค่าใช้จ่ายของคุณใกล้เคียงกับจำนวนที่คุณระบุเท่านั้น
  • จำกัดการใช้งาน API รายวัน เพื่อจัดการค่าใช้จ่ายสำหรับ API ที่เรียกเก็บเงินได้ เมื่อตั้งค่าขีดจำกัดในคำขอต่อวัน คุณจะจำกัดค่าใช้จ่ายได้ ใช้สมการง่ายๆ ในการกำหนดขีดจำกัดรายวัน โดยขึ้นอยู่กับจำนวนเงินที่คุณต้องจ่าย (ค่าใช้จ่ายรายเดือน/ราคาต่อแต่ละรายการ)/30 = คำขอสูงสุดต่อวัน (สำหรับ API 1 รายการ) การใช้งานเฉพาะของคุณอาจใช้ API ที่เรียกเก็บเงินได้หลายรายการ ดังนั้นโปรดปรับสมการตามที่จำเป็น คุณจะได้รับเครดิต Google Maps API มูลค่า$200 USD ในแต่ละเดือน ดังนั้นโปรดคำนึงถึงเรื่องนี้ด้วย
  • ใช้หลายโปรเจ็กต์เพื่อแยก จัดลำดับความสำคัญ และติดตามการใช้งาน ตัวอย่างเช่น สมมติว่าคุณใช้ Google Maps Platform API ในการทดสอบเป็นประจำ การสร้างโปรเจ็กต์แยกต่างหากสำหรับการทดสอบด้วยโควต้าและคีย์ API ของตนเองจะช่วยให้คุณทดสอบได้อย่างละเอียดพร้อมๆ กับป้องกันการใช้จ่ายมากเกินไปโดยไม่คาดคิด

การจัดการการบริโภคใน Maps

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

การใช้ภาพนิ่ง

คำขอที่ใช้ภาพแบบไดนามิก (แผนที่แบบไดนามิกและ Street View แบบไดนามิก) มีค่าใช้จ่ายมากกว่าแผนที่แบบคงที่และ Street View แบบคงที่ หากไม่คาดว่าจะเห็นการโต้ตอบของผู้ใช้กับแผนที่หรือ Street View (การซูมหรือเลื่อน) ให้ใช้เวอร์ชันคงที่ของ API เหล่านี้

ภาพขนาดย่อซึ่งเป็นแผนที่และรูปภาพขนาดเล็กมากๆ ก็เป็นอีกการใช้งานที่ดีสำหรับแผนที่แบบคงที่และ Street View แบบคงที่ ระบบเรียกเก็บเงินรายการเหล่านี้ในอัตราที่ต่ำลงและเมื่อมีการโต้ตอบของผู้ใช้ (เมื่อคลิก) และสามารถนำผู้ใช้ไปยังเวอร์ชันไดนามิกเพื่อรับประสบการณ์การใช้งาน Google Maps เต็มรูปแบบ

การใช้ Maps Embed API

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

การใช้ SDK ของแผนที่บนอุปกรณ์เคลื่อนที่สำหรับแอปพลิเคชันบนอุปกรณ์เคลื่อนที่

สำหรับแอปพลิเคชันบนอุปกรณ์เคลื่อนที่ ให้ใช้ Maps SDK สำหรับ Android หรือ Maps SDK สำหรับ iOS เมื่อแสดงแผนที่ ใช้ Maps Static API หรือ Maps JavaScript API เมื่อข้อกำหนดออกกฎการใช้ SDK อุปกรณ์เคลื่อนที่

จัดการการบริโภคใน Routes

การจำกัดจุดอ้างอิงของ Directions API

หากเป็นไปได้ ให้จำกัดรายการผู้ใช้ในการค้นหาไม่เกิน 10 จุดอ้างอิง ระบบจะเรียกเก็บเงินจากคำขอที่มีจุดอ้างอิงมากกว่า 10 รายการในอัตราที่สูงกว่า

การใช้การเพิ่มประสิทธิภาพ Directions API เพื่อการกำหนดเส้นทางที่ดีที่สุด

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

อาร์กิวเมนต์การเพิ่มประสิทธิภาพจะจัดเรียงจุดอ้างอิงเพื่อให้การกำหนดเส้นทางที่ดีที่สุด ซึ่งหมายความว่าการเดินทางจาก A ไปยัง E จะช่วยให้ได้รับประสบการณ์การใช้งานที่ดีกว่าเมื่อเพิ่มประสิทธิภาพ (A-B-C-D-E) เมื่อเทียบกับลำดับแบบสุ่มของเส้นทางที่ไม่มีการเพิ่มประสิทธิภาพ (เช่น A-D-B-C-E)

การใช้โมเดลการจราจรแบบเรียลไทม์ใน Directions API และ Distance Matrix API

ระบบจะเรียกเก็บเงินคำขอ Directions API และ Distance Matrix API ที่มีโมเดลการเข้าชมแบบเรียลไทม์ในอัตราที่สูงกว่า เปิดใช้โมเดลการจราจรแบบเรียลไทม์ได้โดยตั้งค่าเวลาออกเดินทางเป็น now

หากละเว้นโมเดลการจราจรจากคำขอ ผลลัพธ์จะขึ้นอยู่กับปัจจัยทางกายภาพเท่านั้น ได้แก่ ถนน ระยะทาง และขีดจำกัดความเร็ว

การใช้เส้นทางที่เดินทางและถนนที่ใกล้ที่สุดเมื่อข้อมูล GPS ไม่แม่นยำ

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

การสุ่มตัวอย่างตำแหน่งที่จำกัดความเร็วสูงสุดทุกๆ 5-15 นาที

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

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

การจัดการการบริโภคใน Places

การเพิ่มประสิทธิภาพการใช้การเติมข้อความอัตโนมัติในสถานที่

เพิ่มความคุ้มค่าในการใช้การเติมข้อความอัตโนมัติในสถานที่ต่างๆ ดังนี้

  • ใช้มาสก์ฟิลด์ในวิดเจ็ตการเติมข้อความอัตโนมัติใน JavaScript, Android และ iOS เพื่อแสดงผลเฉพาะช่องข้อมูลสถานที่ที่คุณต้องการ

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

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

การแสดงผลข้อมูลสำหรับช่องใดช่องหนึ่งในรายละเอียดสถานที่และคำขอค้นหาสถานที่

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

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

ลดต้นทุนโดยใช้ Geocoding API

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

หากคุณมีที่อยู่ที่แน่นอน (หรืออยู่ใกล้) คุณสามารถลดต้นทุนได้โดยใช้การระบุพิกัดทางภูมิศาสตร์แทนการเติมข้อความอัตโนมัติ ดูรายละเอียดเพิ่มเติมได้ที่แนวทางปฏิบัติแนะนำสำหรับการระบุพิกัดทางภูมิศาสตร์

โควต้าของ Google Maps Platform ทำงานอย่างไร

API ทั้งหมดของเราจำกัดจำนวนการเรียกที่ลูกค้าแต่ละรายทำได้ โควต้าเหล่านี้จะกำหนดค่าแบบต่อนาที เมื่อคุณมีการเรียก API ถึงโควต้าใน 1 นาทีแล้ว เราจะไม่ยอมรับการเรียกใช้ในอนาคตจนกว่าจะถึงนาทีถัดไป

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

Maps API หลายรายการมีการบังคับใช้ต่อวินาทีนอกเหนือจากการบังคับใช้โควต้าต่อนาที การบังคับใช้ต่อวินาทีนี้ไม่ได้รับประกันการใช้งานที่สม่ำเสมอตลอดทั้งนาที และป้องกันไม่ให้คุณใช้งานถึงโควต้าการใช้งานในนาทีนั้น วิธีนี้จะช่วยไม่ให้คุณใช้โควต้าจนหมดภายในวินาทีแรกหรือ 2 นาทีที่กำหนด และปกป้องคุณจากการหยุดชะงักของบริการในกรณีที่การใช้งานเพิ่มขึ้นอย่างฉับพลัน ในการจัดการกับความแตกต่างในการบังคับใช้เหล่านี้ ให้วางแผนการใช้โควต้าและข้อกำหนดโดยค่าเฉลี่ยการใช้งาน QPM ใน QPS

GMP API ที่มีการบังคับใช้ต่อวินาทีนี้ ได้แก่ Directions API, Distance Matrix API, Elevation API, Geocoding API, Places API และ Roads API

ประมาณค่าใช้จ่ายสำหรับผลิตภัณฑ์ GMP API ใดๆ ตามปริมาณคำขอทั้งหมด