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

คู่มือนี้อธิบายกลยุทธ์ต่างๆ ในการเพิ่มประสิทธิภาพการใช้ 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 เมื่อเพิ่มเครื่องหมายเพื่อระบุตำแหน่งบนแผนที่ หลีกเลี่ยงการใช้รูปภาพกราฟิกเวกเตอร์ที่รองรับการปรับขนาด (SVG) เนื่องจากการแสดงผลรูปภาพ SVG อาจทำให้เกิดความล่าช้าเมื่อวาดแผนที่ใหม่

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

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

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

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

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

การรับชม

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

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

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

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

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

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

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

การใช้ Maps ฝัง API

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

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

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

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

หากต้องการประหยัดค่าใช้จ่ายในการใช้การเติมข้อความอัตโนมัติในสถานที่:

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

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

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

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

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

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

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

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

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

วิธีการทำงานของโควต้า Google Maps Platform

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

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

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

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

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