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

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

ความปลอดภัย

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

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

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

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

ประสิทธิภาพ

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

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

Exponential 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 แยกกัน

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

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

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

การรับชม

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

  • ตั้งการแจ้งเตือนงบประมาณ เพื่อติดตามว่าต้นทุนของคุณเพิ่มขึ้นเป็นจำนวนเงินเท่าไร การตั้งค่างบประมาณไม่ได้จำกัดการใช้ API แต่จะแจ้งเตือนเมื่อค่าใช้จ่ายของคุณใกล้เคียงกับจำนวนที่ระบุไว้เท่านั้น
  • จำกัดการใช้งาน API รายวันเพื่อจัดการค่าใช้จ่ายสำหรับ API ที่เรียกเก็บเงินได้ เมื่อตั้งค่าขีดจำกัดสำหรับคำขอต่อวัน คุณจะจำกัดค่าใช้จ่ายได้ ใช้สมการง่ายๆ ในการกำหนดขีดจำกัดรายวัน โดยขึ้นอยู่กับว่าคุณต้องการใช้จ่ายเท่าใด (ค่าใช้จ่ายรายเดือน/ราคาต่อแต่ละรายการ)/30 = คำขอสูงสุดต่อวัน (สำหรับ API เดียว) การใช้งานแบบเฉพาะเจาะจงของคุณอาจใช้ 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 อุปกรณ์เคลื่อนที่

การจัดการการบริโภคในเส้นทาง

การจำกัดจุดอ้างอิง 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, Route Traveled และ Nearest Road จะรวมอยู่ในฟีเจอร์ขั้นสูงและจะเรียกเก็บเงินในอัตราที่สูงกว่า ใช้ฟีเจอร์เหล่านี้ในกรณีที่ข้อมูล GPS ไม่แม่นยำและ Roads API จะช่วยระบุถนนที่ถูกต้องได้ ขีดจำกัดความเร็วซึ่งเป็นอีกฟีเจอร์หนึ่งของ Roads API มีให้บริการแก่ลูกค้าการติดตามเนื้อหาเท่านั้น

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

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

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

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

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

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

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

  • การเลือกตัวเลือกการเรียกเก็บเงินจะขึ้นอยู่กับกรณีการใช้งานของคุณ ระบบจะเรียกเก็บเงิน 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 โดยอิงตามจำนวนคำขอทั้งหมดของคุณ