คู่มือนี้จะอธิบายกลยุทธ์ต่างๆ ในการเพิ่มประสิทธิภาพการใช้งาน 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 มากเกินไปภายในระยะเวลาสั้นๆ เช่น ข้อผิดพลาดเกี่ยวกับโควต้า ให้ลองใช้การลดจำนวนคำขอแบบทวีคูณเพื่อให้ระบบประมวลผลคำขอ
Exponential Backoff มีประโยชน์มากที่สุดสำหรับข้อผิดพลาดในหมวด 500 ดูข้อมูลเพิ่มเติมได้ที่การจัดการรหัสสถานะการตอบกลับ HTTP
กล่าวคือ ปรับจังหวะการค้นหา ในโค้ด ให้เพิ่มระยะเวลารอ S
วินาทีระหว่างการค้นหา หากการค้นหายังคงส่งผลให้เกิดข้อผิดพลาดเกี่ยวกับโควต้า ให้เพิ่มระยะเวลารอเป็น 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 แยกกัน
การสร้างคลัสเตอร์เพื่อจัดการการแสดงเครื่องหมาย
หากต้องการช่วยจัดการการแสดงเครื่องหมายเพื่อระบุตำแหน่งบนแผนที่ ให้สร้างคลัสเตอร์เครื่องหมายโดยใช้ไลบรารีเครื่องมือจัดกลุ่มเครื่องหมาย ไลบรารีการคลัสเตอร์เครื่องหมายมีตัวเลือกต่อไปนี้
- ขนาดตารางกริด เพื่อระบุจํานวนเครื่องหมายที่จะจัดกลุ่มไว้ด้วยกันในกลุ่ม
- การซูมสูงสุด เพื่อระบุระดับการซูมสูงสุดที่จะแสดงคลัสเตอร์
- เส้นทางรูปภาพสำหรับรูปภาพกราฟิกที่จะใช้เป็นไอคอนเครื่องหมาย
การรับชม
หากต้องการวางแผนงบประมาณและควบคุมค่าใช้จ่าย ให้ทําดังนี้
- ตั้งการแจ้งเตือนงบประมาณเพื่อติดตามว่าค่าใช้จ่ายเพิ่มขึ้นถึงจำนวนเงินที่ต้องการหรือไม่ การตั้งงบประมาณไม่ได้เป็นการกำหนดขีดจำกัดของการใช้งาน 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 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 นาที ค่าที่แน่นอนจะขึ้นอยู่กับความเร็วที่เนื้อหาเคลื่อนที่ หากชิ้นงานอยู่กับที่ ตัวอย่างตำแหน่งเดียวก็เพียงพอแล้ว คุณไม่จำเป็นต้องโทรหลายครั้ง
หากต้องการลดเวลาในการตอบสนองโดยรวม ให้เรียกใช้บริการจำกัดความเร็วเมื่อคุณรวบรวมข้อมูลบางส่วนแล้ว แทนที่จะเรียกใช้ API ทุกครั้งที่ได้รับตำแหน่งของชิ้นงานอุปกรณ์เคลื่อนที่
การจัดการการบริโภคในสถานที่
การเพิ่มประสิทธิภาพการใช้งานฟีเจอร์ Place Autocomplete
วิธีเพิ่มประสิทธิภาพต้นทุนในการใช้การเติมข้อความอัตโนมัติของสถานที่
ใช้มาสก์ช่องในวิดเจ็ตการเติมข้อความอัตโนมัติของ JavaScript, Android และ iOS เพื่อแสดงเฉพาะช่องข้อมูลสถานที่ที่คุณต้องการ
ตัวเลือกการเรียกเก็บเงินที่เลือกจะขึ้นอยู่กับกรณีการใช้งานของคุณ ระบบจะเรียกเก็บเงินจากคุณตาม SKU Autocomplete - Per Request หรือ Autocomplete - Per Session ทั้งนี้ขึ้นอยู่กับว่าการติดตั้งใช้งานใช้เซสชัน Autocomplete หรือไม่
ดูข้อมูลเพิ่มเติมและคำแนะนำในการเลือกตัวเลือกที่เหมาะสมกับ Use Case ของคุณได้ที่แนวทางปฏิบัติแนะนำในการเพิ่มประสิทธิภาพต้นทุนของโฆษณาแบบโฆษณาอัตโนมัติ
แสดงผลข้อมูลสำหรับฟิลด์ที่เฉพาะเจาะจงในคำขอรายละเอียดสถานที่และการค้นหาสถานที่
คุณสามารถปรับแต่งคำขอรายละเอียดสถานที่และการค้นหาสถานที่เพื่อแสดงผลข้อมูลสำหรับช่องที่เฉพาะเจาะจงซึ่งใช้ในแอปพลิเคชันได้ ฟิลด์เหล่านี้แบ่งออกเป็น 3 หมวดหมู่ ได้แก่ พื้นฐาน รายชื่อติดต่อ และบรรยากาศ คําขอที่ไม่ได้ระบุช่องใดๆ จะได้รับข้อมูลสําหรับทุกช่อง
การเรียกเก็บเงินสำหรับคำขอรายละเอียดสถานที่จะอิงตามประเภทและปริมาณข้อมูลที่ได้รับคำขอ ระบบจะเรียกเก็บเงินเต็มราคาสำหรับคำขอที่ไม่ได้ระบุฟิลด์ใดๆ ดูข้อมูลเพิ่มเติมได้ที่รายละเอียดสถานที่และการค้นหาสถานที่
การลดค่าใช้จ่ายโดยใช้ Geocoding API
หากแอปพลิเคชันจัดการที่อยู่ซึ่งผู้ใช้พิมพ์ บางครั้งที่อยู่อาจคลุมเครือ (ไม่สมบูรณ์ สะกดผิด หรือจัดรูปแบบไม่ดี) ระบุที่อยู่ให้ชัดเจนโดยใช้ฟีเจอร์เติมข้อความอัตโนมัติ จากนั้นใช้รหัสสถานที่เพื่อดูตำแหน่งของสถานที่
อย่างไรก็ตาม หากคุณมีที่อยู่จริง (หรือใกล้เคียง) คุณสามารถลดค่าใช้จ่ายได้โดยใช้การแปลงพิกัดภูมิศาสตร์แทนการเติมข้อความอัตโนมัติ ดูรายละเอียดเพิ่มเติมได้ที่แนวทางปฏิบัติแนะนำในการจับคู่ที่อยู่ตามภูมิศาสตร์
การทำงานของโควต้าใน Google Maps Platform
API ทั้งหมดของเรามีการจํากัดจํานวนการเรียกที่ลูกค้าแต่ละรายทําได้ โดยระบบจะกําหนดค่าโควต้าเหล่านี้เป็นรายนาที เมื่อคุณใช้โควต้าการโทรใน API หนึ่งๆ ใน 1 นาที ระบบจะไม่รับการโทรในอนาคตจนกว่าจะถึงนาทีถัดไป
เฉพาะคำขอที่สำเร็จและคำขอที่ทำให้เกิดข้อผิดพลาดของเซิร์ฟเวอร์เท่านั้นที่นับรวมในโควต้า คำขอที่ตรวจสอบสิทธิ์ไม่สำเร็จจะไม่นับรวมในโควต้า
ประมาณค่าใช้จ่ายสำหรับผลิตภัณฑ์ GMP API โดยอิงตามปริมาณคำขอทั้งหมด