Hướng dẫn tối ưu hoá

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 của Google Maps về mặt bảo mật, hiệu suất và mức sử dụng.

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 và cần được bảo vệ như mã nhận dạng người dùng và mật khẩu. Tham khảo 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 việc 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 không hợp lý và các khoản phí ngoài dự kiến cho tài khoản của bạn.

Sử dụng khoá API để truy cập vào API Maps

Khoá API là phương thức xác thực ưu tiên để truy cập vào các API của Google Maps. Mặc dù việc sử dụng mã ứng dụng 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 các địa chỉ web, địa chỉ IP và SDK dành cho thiết bị di động (Android và iOS) cụ thể. Để biết thông tin về cách tạo và bảo mật khoá API, hãy truy cập vào 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 trang Sử dụng khoá API.)

Hiệu suất

Sử 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 quá nhiều lần gọi API trong một khoảng thời gian ngắn, chẳng hạn như lỗi hạn mức, hãy cân nhắc sử dụng thời gian đợi luỹ thừa để cho phép xử lý các 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 khoảng 500. Để biết thêm thông tin, hãy xem phần 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 khoảng 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 hạn mức, 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 khoảng thời gian chờ cho đến khi truy vấn trả về mà không có lỗi.

Gửi yêu cầu tương tác của người dùng theo yêu cầu

Bạn chỉ nên gửi yêu cầu đến các API có hoạt động tương tác của người dùng theo yêu cầu. Điều này có nghĩa 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 đích đến hoặc hiển thị thông tin phù hợp. Việc sử dụng phương pháp theo yêu cầu sẽ tránh được các yêu cầu không cần thiết đối với API, giúp giảm mức sử dụng 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 đồ cùng lúc với khi người dùng có thể 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 giật hoặc hình ảnh bị giật. 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 nội dung sau trong mã phương thức Draw():

  • Các cụm từ tìm kiếm trả về một lượng lớn nội dung.
  • Có nhiều thay đổi đối với dữ liệu đang hiển thị.
  • Thao tác với nhiều phần tử Mô hình đối tượng tài liệu (DOM).

Các thao tác này có thể làm chậm hiệu suất và gây ra độ trễ hoặc hình ảnh bị giật 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.

Đánh dấu tối ưu hoá

Tính năng tối ưu hoá giúp nâng cao hiệu suất bằng cách hiển thị 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, Maps JavaScript API sẽ cố gắng hiển thị các điểm đánh dấu bằng tính năng tối ưu hoá. Không phải tất cả Điểm đánh dấu đều có thể được tối ưu hoá; trong một số trường hợp, API JavaScript của Maps có thể cần hiển thị Đ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 động hoặc PNG, 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ý chế độ hiển thị điểm đánh dấu

Để giúp quản lý việc hiển thị các đ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 thư viện Marker Clusterer (Trình tạo cụm điểm đánh dấu). Thư viện Marker Clusterer bao gồm 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.
  • Mức thu phóng tối đa, để chỉ định mức thu phóng tối đa để hiển thị cụm.
  • Đường dẫn hình ảnh, để các hình ảnh đồ hoạ dùng làm biểu tượng điểm đánh dấu.

Xem nội dung

Để lập ngân sách và kiểm soát chi phí, hãy làm như sau:

  • Đặt cảnh báo về ngân sách để theo dõi mức chi phí đang tăng lên một mức cụ thể. Việc đặt ngân sách không giới hạn mức sử dụng API – chỉ cảnh báo cho bạn khi chi phí của bạn 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í. Sử dụng một phương trình đơn giản để xác định giới hạn 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 yêu cầu)/30 = giới hạn số yêu cầu mỗi ngày (đối với một API). Quá trình triển khai cụ thể của bạn có thể sử dụng nhiều API có thể lập hoá đơn, vì vậy, hãy điều chỉnh phương trình nếu cần. Mỗi tháng, bạn sẽ có khoản tín dụng 200 USD cho API Google Maps. Hãy tính đến khoản tín dụng này khi tính toán.

  • Sử dụng nhiều dự án để tách biệ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ử. 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 trong khi vẫn tránh được việc chi tiêu vượt mức một cách bất ngờ.

Quản lý mức sử dụng trong Maps

Việc sử dụng một bản đồ trên mỗi trang là một cách hay để tối ưu hoá việc 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 với bản đồ để hiển thị nhiều tập dữ liệu, tuỳ thuộc vào nhu cầu và hoạt động tương tác của khách hàng.

Sử dụng hình ả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) sẽ tốn nhiều chi phí 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 việc người dùng tương tác với Bản đồ hoặc Chế độ xem đường phố (thu phóng hoặc kéo), hãy sử dụng phiên bản tĩnh của các API này.

Hình thu nhỏ (bản đồ và ảnh rất nhỏ) là một cách sử dụng hiệu quả 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à khi người dùng tương tác (khi nhấp), đồng thời có thể đưa người dùng đến một phiên bản động để trải nghiệm đầy đủ Google Maps.

Sử dụng Maps Embed API

Bạn có thể sử dụng API Nhúng Maps để thêm một bản đồ có một điểm đánh dấu hoặc một bản đồ động mà không mất phí. Sử dụng API nhúng Maps cho các ứng dụng chỉ cần một điểm đánh dấu và không cần tuỳ chỉnh bản đồ. Các yêu cầu API Nhúng 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 thông tin chi tiết).

Sử dụng SDK bản đồ di động cho ứng dụng di động

Đối với ứng dụng di động, hãy sử dụng SDK Bản đồ cho Android hoặc SDK Bản đồ cho iOS khi hiển thị bản đồ. 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

Giới hạn số điểm trung gian của API chỉ đường

Khi có thể, hãy giới hạn mục nhập của người dùng trong một truy vấn ở mức tối đa là 10 điểm trung gian. Các yêu cầu chứa nhiều hơn 10 điểm trung gian sẽ được tính phí ở mức cao hơn.

Sử dụng tính năng tối ưu hoá API chỉ đường để định tuyến tối ưu

Các yêu cầu sử dụng đối số tối ưu hoá điểm trung gian sẽ được tính phí ở mức cao hơn. Để biết thêm thông tin, hãy xem bài viết Tối ưu hoá điểm trung gian.

Đối số tối ưu hoá sắp xếp các điểm trung gian để đảm bảo định tuyến tối ưu, nghĩa là hành trình 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 tuyến không được tối ưu hoá (chẳng hạn như A-D-B-C-E).

Sử dụng mô hình tình trạng giao thông theo thời gian thực trong API Chỉ đường và API Distance Matrix

Các yêu cầu API chỉ đường và API Distance Matrix có chứa mô hình tình hình giao thông theo thời gian thực sẽ được tính phí ở mức cao hơn. Bạn có thể bật mô hình tình trạng giao thông theo thời gian thực bằng cách đặt thời gian khởi hành thành now.

Nếu bạn bỏ qua mô hình lưu lượng truy cập khỏi yêu cầu, kết quả sẽ 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 Đường của Maps, Tuyến đường đã đi và Đường gần nhất, nằm trong cấp nâng cao và được tính phí theo mức cao hơn. 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 đường. 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 sử dụng dịch vụ Theo dõi tài sản.

Lấy mẫu vị trí giới hạn tốc độ theo khoảng thời gian từ 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 độ của API Đường của Maps, hãy lấy mẫu vị trí của các thành phần của bạn theo 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 thành phần đứng yên, thì một mẫu vị trí là đủ. Bạn không cần thực hiện nhiều lệnh 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 một thành phần trên thiết bị di động.

Quản lý mức sử dụng trong Places

Tối ưu hoá việc triển khai tính năng Tự động hoàn thành địa điểm

Cách tối ưu hoá chi phí sử dụng tính năng Tự động hoàn thành địa điểm:

  • sử dụng mặt nạ trường trong tiện ích Tự động hoàn thành JavaScript, AndroidiOS để chỉ trả về Trường dữ liệu địa điểm mà bạn cần.

  • chọn phương thức thanh toán phụ thuộc vào trường hợp sử dụng của bạn. Tuỳ thuộc vào việc bạn có triển khai phiên Tự động hoàn thành hay không, bạn sẽ bị tính phí theo SKU Tự động hoàn thành – Theo yêu cầu hoặc Tự động hoàn thành – Theo phiên.

Để biết thêm thông tin và hướng dẫn về cách chọn lựa chọn phù hợp với 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í của tính năng Tự động hoàn thành cho địa điểm.

Trả về dữ liệu cho các trường cụ thể trong yêu cầu Thông tin chi tiết về địa điểm và Tìm kiếm địa điểm

Bạn có thể tuỳ chỉnh các yêu cầu Thông tin chi tiết về địa điểm và 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ác trường này được chia thành các danh mục: Cơ bản, Liên hệKhông khí. Các yêu cầu không chỉ định trường nào sẽ nhận được dữ liệu cho tất cả các trường.

Việc tính phí cho các yêu cầu về Thông tin chi tiết về địa điểm sẽ dựa trên loại và số lượng dữ liệu được yêu cầu. Những yêu cầu không chỉ định trường nào sẽ được tính phí theo mức giá đầy đủ. Để biết thêm thông tin, hãy xem phần Chi tiết về địa điểmTìm kiếm địa điểm.

Giảm chi phí bằng cách sử dụng API Mã hoá đị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 định dạng không tốt). Xác định địa chỉ rõ ràng bằng tính năng Tự động hoàn thành, sau đó sử dụng mã địa điểm để lấy vị trí của địa điểm.

Tuy nhiên, nếu có địa chỉ chính xác (hoặc gần chính xác), bạn có thể giảm chi phí bằng cách sử dụng tính năng Mã hoá địa lý thay vì tính năng Tự động hoàn thành. Để biết thêm thông tin chi tiết, hãy xem phần Các phương pháp hay nhất về việc mã hoá địa lý địa chỉ.

Cách hoạt động của hạn mức trên Google Maps Platform

Tất 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 hạn mức này được định cấu hình theo từng 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à 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 xác thực được sẽ không được tính vào hạn mức.

Ước tính chi phí cho bất kỳ sản phẩm API GMP nào, dựa trên tổng số yêu cầu của bạn.