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

Hướng dẫn này mô tả một số chiến lược giúp tối ưu hoá việc sử dụng API Google Maps về khía cạnh 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 và xứng đáng phải tuân thủ 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 trường hợp sử dụng ngoài ý muốn. Điều này có thể khiến tài khoản của bạn bị sử dụng hạn mức quá mức và bị tính phí ngoài dự kiế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 API Google Maps. Mặc dù chúng tôi hiện vẫn hỗ trợ việc sử dụng ID ứng dụng khách, nhưng các 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 cụ thể dành cho thiết bị di động (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 Maps JavaScript, hãy truy cập trang của API đó về cách 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 cố 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 tính năng thời gian đợi luỹ thừa để cho phép 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 thập niên 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 cụm từ tìm kiếm. Trong mã của bạn, hãy thêm một 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 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.

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

Bạn chỉ được gửi yêu cầu đến các API có tương tác của người dùng theo yêu cầu. Tức là đợi 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 một đích đến hoặc hiển thị thông tin thích hợp. Khi sử dụng phương pháp theo yêu cầu, bạn sẽ tránh được các yêu cầu không cần thiết đến API, nhờ đó 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 đồ cùng lúc 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, nên việc đặt nội dung lớp phủ trên bản đồ cùng lúc có thể gây ra độ trễ hoặc hình ảnh bị gián đoạn. 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 các 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ẽ đòi hỏi 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ị.
  • Xử lý nhiều phần tử của 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án đoạn 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 một 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 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 các 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 điểm đánh dấu có được tối ưu hoá hay không. Khi có số lượng lớn điểm đánh dấu, API JavaScript của Maps sẽ cố gắng hiển thị các đ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 hiển thị Điểm đánh dấu mà không cần tối ưu hoá. Tắt tính năng tối ưu hoá tính năng kết xuất 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ý việc hiển thị điểm đánh dấu

Để giúp quản lý cách 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 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 đồng hồ hiển thị.
  • Đường dẫn hình ảnh để sử dụng hình ảnh đồ hoạ làm biểu tượng điểm đá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 về ngân sách để theo dõi chi phí tăng lên một số tiền cụ thể như thế nào. Việc đặt ngân sách không giới hạn mức sử dụng API mà chỉ thông báo cho bạn khi chi phí gần đạt đế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ó 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 loạ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ó thể 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 có thể nhận được một khoản tín dụng API Google Maps trị giá 200 USD. Vì vậy, hãy tính đến yếu tố đó khi tính toán.
  • Sử dụng nhiều dự án để tách biệt, ưu tiên và theo dõi việc 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 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ử (có hạn mức và khoá API riêng), bạn có thể kiểm thử kỹ lưỡng, đồng thời tránh tình trạng chi tiêu vượt mức bất ngờ.

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

Sử dụng một bản đồ trên mỗi trang là cách hay để 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 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ẽ 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 thấy trước được người dùng sẽ 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 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ỏ) cũng là một cách sử dụng hiệu quả 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 hoạt động tương tác của người dùng (khi nhấp chuột) 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 của Maps

Bạn có thể sử dụng API Nhúng của Maps để thêm bản đồ bằng một điểm đánh dấu duy nhất hoặc bản đồ động, hoàn toàn miễn phí. Sử dụng API Nhúng Maps cho các ứng dụng yêu cầu 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 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 thông tin chi tiết).

Sử dụng SDK bản đồ trên thiết bị di động cho các ứng dụng di động

Đối với ứng dụng 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 đồ. 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 không liên quan đến 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 API chỉ đường

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í cao hơn.

Sử dụng tính năng tối ưu hoá API Đường đi để đị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ẽ bị tính 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 việc định tuyến tối ưu, tức 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 mô hình giao thông theo thời gian thực trong API Hướng dẫn và API Ma trận từ xa

Các yêu cầu API hướng 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 khỏi 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 quản lý, Tuyến đường đã đi và Đường gần nhất, được đưa vào bậc nâng cao và bị tính phí ở mức cao hơn. Hãy sử dụng các tính năng này trong đó 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 sử dụng tính năng Theo dõi thành phần.

Giới hạn tốc độ lấy mẫu tại các vị trí 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 độ của API Maps Xây dựng, hãy lấy mẫu vị trí của các tài sản trong các 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 thành phần. Nếu một tài sản đứng yên, thì chỉ cần một mẫu địa điểm 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 thông tin vị trí của thành phần trên thiết bị di động.

Quản lý hoạt động tiêu thụ ở đị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 theo đị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ề Trường dữ liệu về địa điểm mà bạn cần.

  • lựa 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 quá trình triển khai của bạn có sử dụng 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 – 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 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í 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 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ầu 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 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. Yêu cầu không chỉ định bất kỳ trường nào sẽ được tính phí ở mức giá đầy đủ. Để biết thêm thông tin, hãy xem Thông tin 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ý các đị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 định dạng không rõ ràng). 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ề 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 tính năng Mã hoá địa lý thay vì Tự động hoàn thành. Để biết thêm thông tin chi tiết, hãy xem Các phương pháp hay nhất về mã hoá địa lý.

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 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ỉ các 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 xác thực được không được tính vào hạn mức.

Một số API Maps có chế độ thực thi theo mỗi giây ngoài việc thực thi hạn mức theo 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, cũng như không ngăn bạn đạt đến hạn mức sử dụng cho 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 khác biệt về cách thực thi này, hãy lên kế hoạch cho mức 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 khoảng cách, API độ cao, API mã hoá địa lý, API địa điểm và API đường.

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