Hướng dẫn này mô tả một số chiến lược để tối ưu hoá việc sử dụng API Google Maps về mặt bảo mật, hiệu suất và mức tiêu thụ.
Bảo mật
Xem xét các phương pháp hay nhất về bảo mật
Khoá API là thông tin xác thực tập trung vào dự án, xứng đáng có các biện pháp phòng ngừa tương tự như mã nhận dạng người dùng và mật khẩu. Xem lại Các phương pháp hay nhất về bảo mật API để bảo vệ khoá của bạn khỏi hành vi sử dụng ngoài ý muốn. Điều này có thể dẫn đến việc sử dụng hạn mức quá mức và phát sinh các khoản phí ngoài dự kiến đối với tài khoản của bạn.
Sử dụng khoá API để truy cập API Maps
Khoá API là phương thức xác thực ưu tiên để truy cập vào các API API của Google Maps. Mặc dù việc sử dụng mã ứng dụng khách hiện vẫn được hỗ trợ, nhưng khoá API hỗ trợ các biện pháp kiểm soát bảo mật chi tiết hơn và có thể được điều chỉnh để hoạt động với địa chỉ web, địa chỉ IP cũng như SDK di động cụ thể (Android và iOS). Để biết thông tin về cách tạo và bảo mật khoá API, hãy chuyển đến trang "Sử dụng khoá API" cho từng API hoặc SDK. (Ví dụ: đối với API JavaScript của Maps, hãy truy cập vào trang của API đó về Sử dụng khoá API.)
Hiệu suất
Dùng thuật toán thời gian đợi luỹ thừa để xử lý lỗi
Nếu ứng dụng của bạn gặp lỗi do cố gắng gọi API quá nhiều lần trong một khoảng thời gian ngắn, chẳng hạn như lỗi QPS, hãy cân nhắc sử dụng thời gian đợi luỹ thừa để cho phép quá trình xử lý yêu cầu.
Thuật toán thời gian đợi luỹ thừa hữu ích nhất đối với các lỗi trong những năm 500. Để biết thêm thông tin, hãy xem bài viết Xử lý mã trạng thái trả về HTTP.
Cụ thể, hãy điều chỉnh tốc độ của các truy vấn. Trong mã, hãy thêm thời gian chờ là S
giây giữa các truy vấn. Nếu truy vấn vẫn dẫn đến lỗi QPS, hãy tăng gấp đôi thời gian chờ rồi gửi một truy vấn khác. Tiếp tục điều chỉnh thời gian chờ cho đến khi truy vấn trả về mà không có lỗi nào.
Gửi yêu cầu tương tác của người dùng theo yêu cầu
Yêu cầu đến các API bao gồm tương tác của người dùng chỉ nên được gửi theo yêu cầu.
Tức là chờ người dùng cuối thực hiện một hành động (chẳng hạn như on-click
) để bắt đầu yêu cầu API, sau đó sử dụng kết quả để tải bản đồ, đặt điểm đến hoặc hiển thị thông tin thích hợp. Việc sử dụng phương pháp theo yêu cầu sẽ tránh các yêu cầu không cần thiết đối với API, giúp giảm mức tiêu thụ API.
Tránh hiển thị nội dung lớp phủ khi bản đồ đang di chuyển
Tránh sử dụng Draw()
để hiển thị nội dung lớp phủ tuỳ chỉnh trên bản đồ tại cùng thời điểm mà người dùng có thể đang di chuyển bản đồ. Vì bản đồ được vẽ lại mỗi khi người dùng di chuyển bản đồ, nên việc đặt nội dung lớp phủ trên bản đồ cùng một lúc có thể gây ra hiện tượng trễ hoặc gián đoạn hình ảnh. Chỉ thêm hoặc xoá nội dung lớp phủ khỏi bản đồ sau khi người dùng ngừng kéo hoặc thu phóng.
Tránh các thao tác chuyên sâu trong phương thức Draw
Nguyên tắc chung là bạn nên tránh các thao tác không vẽ tốn nhiều hiệu suất trong phương thức Draw()
. Ví dụ: hãy tránh
những điều sau trong mã phương thức Draw()
:
- Các truy vấn trả về một lượng lớn nội dung.
- Nhiều thay đổi đối với dữ liệu đang được hiển thị.
- Sửa đổi nhiều phần tử Mô hình đối tượng tài liệu (DOM).
Những thao tác này có thể làm chậm hiệu suất và gây ra tình trạng trễ hoặc gián đoạn hình ảnh khi bản đồ hiển thị.
Sử dụng hình ảnh đường quét cho điểm đánh dấu
Sử dụng hình ảnh đường quét, chẳng hạn như hình ảnh ở định dạng .PNG hoặc .JPG, khi thêm điểm đánh dấu để xác định vị trí trên bản đồ. Tránh sử dụng hình ảnh Đồ hoạ vectơ có thể mở rộng (SVG), vì việc kết xuất hình ảnh SVG có thể gây ra độ trễ khi bản đồ được vẽ lại.
Tối ưu hoá điểm đánh dấu
Tính năng tối ưu hoá giúp nâng cao hiệu suất bằng cách kết xuất nhiều điểm đánh dấu dưới dạng một phần tử tĩnh duy nhất. Điều này hữu ích trong trường hợp cần có một số lượng lớn điểm đánh dấu. Theo mặc định, API JavaScript của Maps sẽ quyết định xem một điểm đánh dấu có được tối ưu hoá hay không. Khi có một số lượng lớn điểm đánh dấu, API JavaScript của Maps sẽ cố gắng kết xuất điểm đánh dấu thông qua tính năng tối ưu hoá. Không phải Điểm đánh dấu nào cũng có thể được tối ưu hoá; trong một số trường hợp, API JavaScript của Maps có thể cần kết xuất Điểm đánh dấu mà không cần tối ưu hoá. Tắt tính năng kết xuất được tối ưu hoá cho ảnh GIF hoặc PNG động, hoặc khi mỗi điểm đánh dấu phải được kết xuất dưới dạng một phần tử DOM riêng biệt.
Tạo cụm để quản lý cách hiển thị điểm đánh dấu
Để giúp quản lý việc hiển thị điểm đánh dấu nhằm xác định vị trí trên bản đồ, hãy tạo một cụm điểm đánh dấu bằng cách sử dụng thư viện Marker Clusterer. Thư viện Marker Clusterer có các tuỳ chọn cho:
- Kích thước lưới để chỉ định số lượng điểm đánh dấu cần nhóm lại với nhau trong một cụm.
- Thu phóng tối đa, để chỉ định mức thu phóng tối đa mà cụm hiển thị.
- Đường dẫn hình ảnh, để hình ảnh đồ hoạ sử dụng làm biểu tượng đánh dấu.
Xem nội dung
Để lập kế hoạch ngân sách và kiểm soát chi phí, hãy làm như sau:
- Đặt cảnh báo ngân sách
để theo dõi xem chi phí của bạn đang tăng như thế nào so với một số tiền cụ thể. Việc đặt ngân sách không giới hạn mức sử dụng API – chỉ thông báo cho bạn khi chi phí gần đạt đến số tiền bạn đã chỉ định.
- Giới hạn mức sử dụng API hằng ngày để quản lý chi phí cho các API có tính phí. Bằng cách đặt giới hạn về số yêu cầu mỗi ngày, bạn có thể giới hạn chi phí của mình. Sử dụng một phương trình đơn giản để xác định hạn mức hằng ngày, tuỳ thuộc vào số tiền bạn muốn chi tiêu: (chi phí hằng tháng/giá mỗi lượt chuyển đổi)/30 = số yêu cầu giới hạn mỗi ngày (cho một API). Quá trình triển khai cụ thể của bạn có thể sử dụng nhiều API có tính phí, vì vậy, hãy điều chỉnh phương trình nếu cần. Mỗi tháng, bạn sẽ nhận được khoản tín dụng API Google Maps trị giá 200 USD, vì vậy, hãy tính đến khoản tín dụng đó khi tính toán.
- Sử dụng nhiều dự án để tách biệt, sắp xếp thứ tự ưu tiên và theo dõi mức sử dụng. Ví dụ: giả sử bạn thường xuyên sử dụng các API Nền tảng Google Maps trong các bài kiểm thử của mình. Bằng cách tạo một dự án riêng cho hoạt động kiểm thử (có hạn mức và khoá API riêng), bạn có thể kiểm thử kỹ lưỡng và tránh chi tiêu quá mức bất ngờ.
Quản lý mức tiêu thụ trong Maps
Sử dụng một bản đồ cho mỗi trang là cách tốt để tối ưu hoá chế độ hiển thị bản đồ, vì người dùng thường chỉ tương tác với một bản đồ tại một thời điểm. Ứng dụng của bạn có thể thao tác trên bản đồ để hiển thị các tập dữ liệu khác nhau, tuỳ thuộc vào tương tác và nhu cầu của khách hàng.
Sử dụng ảnh tĩnh
Các yêu cầu sử dụng hình ảnh động (Bản đồ động và Chế độ xem đường phố động) có chi phí cao hơn so với Bản đồ tĩnh và Chế độ xem đường phố tĩnh. Nếu bạn không lường trước được sự tương tác của người dùng với Bản đồ hoặc Chế độ xem đường phố (thu phóng hoặc kéo), hãy sử dụng các phiên bản tĩnh của các API này.
Hình thu nhỏ (bản đồ và ảnh với kích thước rất nhỏ) là một cách hữu hiệu khác cho Bản đồ tĩnh và Chế độ xem đường phố tĩnh. Các mục này được tính phí ở mức thấp hơn và dựa trên sự tương tác của người dùng (khi nhấp) và có thể đưa người dùng đến phiên bản động để có được trải nghiệm Google Maps đầy đủ.
Sử dụng API nhúng Maps
Bạn có thể sử dụng API nhúng Maps để thêm bản đồ bằng một điểm đánh dấu duy nhất hoặc bản đồ động mà không mất phí. Sử dụng API Nhúng của Maps cho các ứng dụng có một điểm đánh dấu duy nhất và không yêu cầu tuỳ chỉnh bản đồ. Các yêu cầu API Nhúng của Maps sử dụng Chế độ chỉ đường, Chế độ xem hoặc Chế độ tìm kiếm sẽ được tính phí (xem bảng giá để biết chi tiết).
Sử dụng SDK bản đồ dành cho thiết bị di động cho các ứng dụng dành cho thiết bị di động
Đối với ứng dụng dành cho thiết bị di động, hãy sử dụng SDK Bản đồ dành cho Android hoặc SDK Bản đồ dành cho iOS khi hiển thị bản đồ. Hãy sử dụng API tĩnh của Maps hoặc API JavaScript của Maps khi các yêu cầu loại trừ việc sử dụng SDK dành cho thiết bị di động.
Quản lý mức tiêu thụ trong Tuyến đường
Giới hạn điểm tham chiếu của API Chỉ dẫn
Khi có thể, hãy giới hạn mục nhập của người dùng trong truy vấn ở tối đa 10 điểm tham chiếu. Yêu cầu chứa hơn 10 điểm tham chiếu sẽ được tính phí ở mức cao hơn.
Sử dụng tính năng tối ưu hoá API Chỉ dẫn để định tuyến tối ưu
Các yêu cầu sử dụng đối số tối ưu hoá điểm tham chiếu sẽ có mức phí cao hơn. Để biết thêm thông tin, hãy xem phần Tối ưu hoá điểm tham chiếu.
Đối số tối ưu hoá sắp xếp các điểm tham chiếu để đảm bảo định tuyến tối ưu, nghĩa là việc di chuyển từ A đến E sẽ mang lại trải nghiệm tốt hơn khi được tối ưu hoá (A-B-C-D-E) so với trình tự ngẫu nhiên của một tuyến không được tối ưu hoá (chẳng hạn như A-D-B-C-E).
Sử dụng các mô hình giao thông theo thời gian thực trong API Chỉ dẫn và API ma trận từ xa
Các yêu cầu API chỉ dẫn và API ma trận từ xa bao gồm mô hình lưu lượng truy cập theo thời gian thực sẽ được tính phí cao hơn.
Mô hình giao thông theo thời gian thực được bật bằng cách đặt thời gian khởi hành thành now
.
Nếu mô hình giao thông bị bỏ qua trong một yêu cầu, thì kết quả chỉ dựa trên các yếu tố thực tế: đường, khoảng cách và giới hạn tốc độ.
Sử dụng tuyến đường đã đi và đường gần nhất khi dữ liệu GPS không chính xác
Các tính năng của API Maps Đường, Tuyến đường đã đi và Đường gần nhất, được đưa vào cấp nâng cao và được tính phí ở mức cao hơn. Hãy sử dụng các tính năng này khi dữ liệu GPS không chính xác và API Đường có thể giúp xác định đường chính xác. Giới hạn tốc độ, một tính năng khác của API Đường, chỉ dành cho khách hàng Theo dõi tài sản.
Vị trí giới hạn tốc độ lấy mẫu cách nhau 5 đến 15 phút
Để giảm thiểu số lượng lệnh gọi đến dịch vụ Giới hạn tốc độ API của Maps, hãy lấy mẫu vị trí của các tài sản trong khoảng thời gian từ 5 đến 15 phút. Giá trị chính xác phụ thuộc vào tốc độ di chuyển của một thành phần. Nếu một tài sản đứng yên, thì chỉ cần một mẫu vị trí là đủ. Bạn không cần thực hiện nhiều cuộc gọi.
Để giảm thiểu độ trễ tổng thể, hãy gọi dịch vụ Giới hạn tốc độ sau khi bạn đã tích luỹ một số dữ liệu thay vì gọi API mỗi khi nhận được vị trí của thành phần trên thiết bị di động.
Quản lý tiêu dùng tại Địa điểm
Tối ưu hoá việc triển khai tính năng Tự động hoàn thành địa điểm
Để tối ưu hoá chi phí sử dụng tính năng Tự động hoàn thành của địa điểm:
sử dụng mặt nạ trường trong các tiện ích Tự động hoàn thành JavaScript, Android và iOS để chỉ trả về các Trường dữ liệu về địa điểm mà bạn cần.
chọn lựa chọn thanh toán tuỳ thuộc vào trường hợp sử dụng của bạn. Tuỳ thuộc vào việc phương thức triển khai của bạn có sử dụng Phiên Autcomplete hay không, bạn sẽ được tính phí theo các SKU Tự động hoàn thành – Theo yêu cầu hoặc Tự động hoàn thành – Theo mỗi phiên.
Để biết thêm thông tin và hướng dẫn về cách chọn phương án phù hợp cho trường hợp sử dụng của bạn, hãy xem bài viết Các phương pháp hay nhất để tối ưu hoá chi phí tự động hoàn thành.
Trả về dữ liệu cho các trường cụ thể trong Chi tiết địa điểm và yêu cầu Tìm kiếm địa điểm
Bạn có thể tùy chỉnh Chi tiết địa điểm và yêu cầu Tìm kiếm địa điểm để trả về dữ liệu cho các trường cụ thể được sử dụng trong ứng dụng của bạn. Các trường này được chia thành các danh mục: Cơ bản, Liên hệ và Bầu không khí. Các yêu cầu không chỉ định bất kỳ trường nào sẽ nhận được dữ liệu cho tất cả các trường.
Việc thanh toán cho yêu cầu Thông tin chi tiết về địa điểm sẽ dựa trên loại và lượng dữ liệu yêu cầu. Các yêu cầu không chỉ định bất kỳ trường nào sẽ được lập hoá đơn ở mức giá đầy đủ. Để biết thêm thông tin, hãy xem Thông tin chi tiết về địa điểm và Tìm kiếm địa điểm.
Giảm chi phí bằng cách sử dụng API mã hóa địa lý
Nếu ứng dụng của bạn xử lý địa chỉ do người dùng nhập, thì địa chỉ đôi khi không rõ ràng (không đầy đủ, sai chính tả hoặc có định dạng không hợp lệ). Phân biệt các địa chỉ bằng cách sử dụng tính năng Tự động hoàn thành, sau đó sử dụng mã địa điểm để lấy thông tin vị trí của địa điểm.
Tuy nhiên, nếu có địa chỉ chính xác (hoặc gần với địa chỉ đó), bạn có thể giảm chi phí bằng cách sử dụng Mã hoá địa lý thay vì Tự động hoàn thành. Để biết thêm thông tin, hãy xem Các phương pháp hay nhất về mã hoá địa lý địa chỉ.
Cách hoạt động của hạn mức trên Nền tảng Google Maps
Tất cả các API của chúng tôi đều có giới hạn về số lượng lệnh gọi mà mỗi khách hàng có thể thực hiện. Các giới hạn này được định cấu hình theo phút. Sau khi bạn đạt đến hạn mức lệnh gọi trên một API nhất định trong một phút, các lệnh gọi trong tương lai sẽ không được chấp nhận cho đến phút tiếp theo.
Chỉ những yêu cầu thành công và các yêu cầu gây ra lỗi máy chủ mới được tính vào hạn mức. Các yêu cầu không được xác thực sẽ không được tính vào hạn mức.
Một số API Maps có thực thi mỗi giây ngoài việc thực thi hạn mức mỗi phút. Thao tác thực thi mỗi giây này không đảm bảo mức sử dụng đồng nhất trong toàn bộ phút và cũng không ngăn bạn đạt đến hạn mức sử dụng trong phút đó. Tính năng này giúp bạn không sử dụng hết hạn mức trong một hoặc hai phút đầu tiên bất kỳ, đồng thời bảo vệ bạn khỏi bị gián đoạn dịch vụ trong trường hợp mức sử dụng tăng đột biến. Để giải quyết những điểm khác biệt về thực thi này, hãy lên kế hoạch sử dụng hạn mức và các yêu cầu bằng cách tính trung bình mức sử dụng QPM trên QPS.
Các API GMP có hành động thực thi mỗi giây này là API chỉ đường, API ma trận từ xa, API độ cao, API mã hoá địa lý, API địa điểm và API đường.
Ước tính chi phí cho các sản phẩm API GMP dựa trên tổng số lượng yêu cầu.