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

Sử dụng bộ sưu tập để sắp xếp ngăn nắp các trang Lưu và phân loại nội dung dựa trên lựa chọn ưu tiên của bạn.

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 bảo mật hay nhất

Khoá API là thông tin xác thực tập trung vào dự án cần đáp ứng các biện pháp phòng ngừa giống 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 hoạt động sử dụng ngoài ý muốn, có thể dẫn đến việc sử dụng quá hạn mức và tính phí không mong muốn cho 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 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ợ, các khoá API hỗ trợ các chế độ kiểm soát bảo mật tinh tế và có thể được điều chỉnh để hoạt động với địa chỉ web, địa chỉ IP và SDK trên thiết bị 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 truy cập trang "Sử dụng khoá API" cho từng API hoặc SDK. (Ví dụ: đối với API Maps JavaScript, hãy truy cập vào trang trên API Sử dụng khóa API.)

Hiệu suất

Sử dụng thuật toán đợi lũy tuyến để xử lý lỗi

Nếu ứng dụng của bạn gặp lỗi từ các lượt gọi quá nhiều API 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 các yêu cầu.

Thuật toán thời gian đợi lũy thừa hữu ích nhất cho các lỗi trong những năm 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 truy vấn. Trong mã của bạn, hãy thêm thời gian chờ 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 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 gửi đến các API bao gồm 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 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 nội dung lớp phủ tuỳ chỉnh trên bản đồ vào cùng thời điể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 đồ, việc đặt nội dung của lớp phủ trên bản đồ cùng lúc có thể tạo ra độ trễ hoặc tình trạng giật hình. Chỉ thêm hoặc xoá nội dung lớp phủ khỏi bản đồ khi người dùng ngừng di chuyển 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 hoạt động không phải vẽ nhiều lần về hiệu suất trong phương thức Draw(). Ví dụ: hãy tránh các trường hợp sau trong mã phương thức Draw():

  • Truy vấn 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ị.
  • Sửa đổ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 hiện tượng giật khung hình hoặc tình trạng giật hình khi bản đồ hiển thị.

Sử dụng hình ảnh đường quét cho điểm đánh dấu

Hãy 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 vectơ đồ hoạ 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 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 rất 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 có đánh dấu điểm tối ưu hoá hay không. Khi có một số lượng lớn các điểm đánh dấu, API Maps JavaScript sẽ cố gắng hiển thị các điểm đánh dấu bằng tính năng tối ưu hóa. Không phải tất cả các Điểm đánh dấu đều có thể được tối ưu hóa; trong một số trường hợp, API JavaScript cho Maps có thể cần phải hiển thị Điểm đánh dấu mà không cần tối ưu hóa. Tắt tính năng kết xuất hình ảnh tối ưu cho ảnh GIF hoặc PNG động, hoặc khi mỗi điểm đánh dấu phải hiển thị dưới dạng một phần tử DOM riêng biệt.

Tạo các 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 đánh dấu bằng cách sử dụng thư viện Điểm đánh dấu. Thư viện Công cụ đánh dấu cụm này có các lựa chọn cho:

  • Kích thước lưới để chỉ định số lượng điểm đánh dấu để nhóm với nhau trong một cụm.
  • 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 để hình ảnh đồ hoạ sử dụng làm biểu tượng điểm đánh dấu.

Mức tiêu thụ

Để 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 mức tăng trưởng chi phí của bạn theo một số tiền cụ thể. Việc đặt ngân sách sẽ không giới hạn mức sử dụng API – tính năng này chỉ thông báo cho bạn khi chi phí gần đến số tiề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ó thể lập hoá đơn. Khi đặ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 giới hạn hằng ngày của bạn, 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 )/30 = giới hạn số yêu cầu mỗi ngày (cho một API). Quá trình triển khai cụ thể có thể sử dụng nhiều API có thể thanh toán, vì vậy, hãy điều chỉnh phương trình nếu cần. Bạn nhận được tín dụng API Google Maps trị giá 200 USD mỗi tháng, vì vậy, hãy tính đến yếu tố đó.
  • Sử dụng nhiều dự án để tách biệt, sắp xếp mức độ ưu tiên và theo dõi hoạt động sử dụng của bạn. Ví dụ: giả sử bạn thường xuyên sử dụng API Nền tảng Google Maps trong các lần kiểm thử của mình. Bằng cách tạo một dự án riêng cho quy trình kiểm thử với 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 tình trạng chi tiêu quá mức bất ngờ.

Quản lý mức tiêu thụ trong Maps

Việc sử dụng một bản đồ cho 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ó 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 nhu cầu tương tác và nhu cầu 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 phố linh động) sẽ tốn nhiều chi phí hơn so với Bản đồ tĩnh và Chế độ xem phố tĩnh. Nếu bạn không dự đoán được tương tác của người dùng với Bản đồ hoặc Chế độ xem 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 rất nhỏ – là một cách sử dụng phù hợp khác cho Maps tĩnh và Chế độ xem phố tĩnh. Các mục này được lập hóa đơn ở mức giá thấp hơn và khi người dùng tương tác (khi nhấp chuột), đồng thời có thể đưa người dùng đến một phiên bản động để có trải nghiệm Google Maps đầy đủ.

Sử dụng API nhúng của Maps

Bạn có thể sử dụng Maps Nhúng API để thêm bản đồ có một điểm đánh dấu duy nhất hoặc một bản đồ động miễn phí. Sử dụng API Nhúng của Maps cho các ứng dụng cần có một điểm đánh dấu và không cần tùy 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 lập hóa đơn (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 các ứng dụng dành cho thiết bị di động, hãy sử dụng SDK Maps dành cho Android hoặc SDK Maps dành cho iOS khi hiển thị bản đồ. Sử dụng API tĩnh của Google Maps hoặc API Maps JavaScript khi các yêu cầu loại trừ bằng SDK di động.

Quản lý mức tiêu thụ trong các tuyến

Giới hạn điểm tham chiếu API chỉ đường

Khi có thể, hãy giới hạn các mục nhập của người dùng trong một truy vấn ở tối đa 10 điểm tham chiếu. Các yêu cầu chứa hơn 10 điểm tham chiếu sẽ được tính phí theo tỷ lệ 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 dùng đối số tối ưu hoá điểm tham chiếu sẽ được tính phí theo tỷ lệ cao hơn. Để biết thêm thông tin, hãy xem bài viết Tối ưu hoá Điểm tham chiếu.

Đối số tối ưu hoá sẽ 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 đi từ A đến E là một 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 mô hình giao thông theo thời gian thực trong API Chỉ đường và API Ma trận khoảng cách

Các yêu cầu API chỉ đường và API ma trận khoảng cách bao gồm các mô hình lưu lượng truy cập theo thời gian thực sẽ được tính phí theo tỷ lệ cao hơn. Bật mô hình giao thông theo thời gian thực bằng cách đặt thời gian khởi hành là now.

Nếu các mô hình giao thông bị bỏ qua trong một yêu cầu, thì 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 lạ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 Road, Tuyến đường đã đi và Đường gần nhất, được bao gồm trong cấp nâng cao và được thanh toán ở mức giá cao hơn. Hãy sử dụng các tính năng mà 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.

Các vị trí giới hạn tốc độ lấy mẫu cách nhau 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 Maps đường, hãy lấy mẫu các vị trí của tài sản tại 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 cố định thì chỉ cần một mẫu vị trí là đủ. Bạn không cần gọi nhiều lần.

Để giảm thiểu độ trễ tổng thể, hãy gọi dịch vụ Giới hạn tốc độ sau khi 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ý mức tiêu thụ trong Đị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 địa điểm:

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

  • chọn tuỳ 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 không hoàn tất hay không, bạn sẽ bị tính phí theo SKU Tự động hoàn thành – Mỗi yêu cầu hoặc Tự động hoàn thành – 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 của bạn, hãy xem bài viết Các phương pháp hay nhất về việc tối ưu hoá chi phí tự động hoàn thành.

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

Bạn có thể tuỳ chỉnh thông tin chi tiết về Đị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ệBối cảnh. Các yêu cầu không chỉ định trường nào sẽ nhận dữ liệu cho tất cả các trường.

Việc thanh toán cho các yêu cầu Thông tin chi tiết về địa điểm dựa trên loại và lượng dữ liệu được 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 theo tỷ lệ đầy đủ. Để biết thêm thông tin, hãy xem bài viết Thông tin 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ã 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ì các địa chỉ đôi khi không rõ ràng (không đầy đủ, sai chính tả hoặc được định dạng không đúng). Phân biệt địa chỉ bằng tính năng Tự động hoàn thành, sau đó sử dụng mã địa điểm để nhận thông tin vị trí của địa điểm.

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

Cách hoạt động của hạn mức Nền tảng Google Maps

Tất cả các API của chúng tôi đều giới hạn 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 định 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.

Một số API của Maps có biện pháp thực thi từng giây bên cạnh việc thực thi hạn mức theo phút. Việ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, cũng như không ngăn bạn đạt đến hạn mức sử dụng cho phút đó. Nó giúp bạn không phải sử dụng hết hạn mức của mình trong một hoặc hai giây đầu tiên của bất kỳ phút nào, đồng thời bảo vệ bạn khỏi các gián đoạn dịch vụ trong trường hợp mức sử dụng tăng đột ngột. Để giải quyết những khác biệt về việc 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 trung bình sử dụng QPM trên QPS.

Các API GMP có biện pháp thực thi từng giây này là API Đường đi, API Ma trận khoảng cách, API Độ cao, API Mã hóa địa lý, API Địa điểm và API Đường.

Ước tính chi phí cho mọi sản phẩm API GMP, dựa trên tổng số lượng yêu cầu của bạn.