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 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 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 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 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 quá hạn mức 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 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 API Google Maps. Mặc dù chúng tôi vẫn hỗ trợ việc sử dụng mã ứng dụng khách, nhưng khoá API hỗ trợ các chế độ 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 trang "Sử dụng khoá API" cho từng API hoặc SDK. (Ví dụ: đối với API JavaScript cho Maps, hãy truy cập trang của API đó tại phần 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 cố gắng gọi một 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 tính năng thuật toán 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 bộ nhớ 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 cụm từ tìm kiếm. 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 nhân đô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ỉ nên gửi yêu cầu đến các API có bao gồm hoạt động tương tác của người dùng khi có 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ẽ giúp tránh được các yêu cầu không cần thiết đối với 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 đồ 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 đồ, nên việc đặt nội dung lớp phủ trên bản đồ cùng lúc có thể gây ra tình trạ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 dừng xoay hoặc thu phóng.

Tránh các thao tác chuyên sâu trong các phương thức Draw

Theo nguyên tắc chung, 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 đây trong mã phương thức Draw():

  • Các 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 được hiển thị.
  • Thao túng 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 để đá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.

Đang 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 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 với 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 hiển thị đượ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 hiển thị dưới dạng một phần tử DOM riêng.

Tạo cụm để quản lý 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 Điểm đánh dấu Clusterer. 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 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 cần hiển thị cụm.
  • Đường dẫn hình ảnh, để hình ảnh đồ hoạ dùng 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 mức tăng chi phí của bạn so với 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 mà chỉ cảnh báo bạn khi chi phí của bạn 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ó thể 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 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 mặt hàng)/30 = số yêu cầu tối đa mỗi ngày (đối với một API). Cách 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. Bạn có 200 USD tín dụng API Google Maps mỗi tháng, vì vậy, hãy tính đến số tiền 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 của 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 để kiểm thử – với hạn mức và khoá API riêng – bạn có thể kiểm thử kỹ lưỡng mà 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

Sử dụng một bản đồ duy nhất trên mỗi trang là cách hay để tối ưu hoá khả năng 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 đồ để cho thấy các tập dữ liệu khác nhau, tuỳ thuộc vào nhu cầu và mức độ 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) 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 sẽ 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ỏ) cũng 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í với mức phí thấp hơn và dựa trên sự tương tác của người dùng (khi nhấp), đồng thời có thể đưa người dùng đến 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 API Nhúng của Maps để thêm miễn phí bản đồ bằng một điểm đánh dấu hoặc bản đồ động. Sử dụng API Nhúng của Maps cho các ứng dụng trong đó một điểm đánh dấu duy nhất mà không cần tuỳ chỉnh bản đồ. Các yêu cầu API Nhúng của Maps có sử dụng Chế độ đường đi, 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 đồ di động cho các ứng dụng trên điện thoại di động

Đối với các ứ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 đồ. Sử dụng API Maps tĩnh hoặc API JavaScript của Maps khi các yêu cầu không áp dụng cho việc sử dụng SDK dành cho thiết bị di động.

Quản lý mức sử dụng trong 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. Yêu cầu có 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 để tối ưu hoá việc định tuyến

Yêu cầu sử dụng đối số tối ưu hoá điểm tham chiếu được tính phí 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ắp xếp các điểm tham chiếu để đảm bảo định tuyến tối ưu, tức là việc di chuyển từ A đến E sẽ có 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 lưu lượng truy cập 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 khoảng cách chứa mô hình lưu lượng truy cập theo thời gian thực sẽ có mức phí cao hơn. Mô hình giao thông theo thời gian thực sẽ được bật bằng cách đặt thời gian khởi hành thành now.

Nếu các mô hình giao thông bị bỏ qua khỏi yêu cầu, thì kết quả chỉ dựa trên các yếu tố thực tế như đườ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 API Đường của Maps, Tuyến đường đã đi và Đường gần nhất, được đưa vào cấp nâng cao và được tính phí 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 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 tài sản.

Các vị trí giới hạn tốc độ lấy mẫu với 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 Maps Road, lấy mẫu vị trí của các thành phầ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 nội dung. Nếu một thành phần là tĩnh thì chỉ cần một mẫu vị trí là đủ. Bạn không cần phải 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 thông tin vị trí của tài sản trên thiết bị di động.

Quản lý mức sử dụng trên Google Địa điểm

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

Để tối ưu hóa chi phí sử dụng tính năng Tự động hoàn thành về đị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 địa điểm mà bạn cần.

  • chọn phương thức 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 cách triển khai của bạn có sử dụng phiên Autcomplete hay không, bạn sẽ bị 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 – 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 tham khảo bài viết Các phương pháp hay nhất để tối ưu hoá chi phí cho tính năng Tự động hoàn thành.

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

Bạn có thể tuỳ chỉnh yêu cầu Chi tiết địa điểm và Tìm kiếm địa điểm để trả về dữ liệu cho các trường cụ thể 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ệKhí quyển. Các yêu cầu không chỉ định trường nào sẽ nhận được dữ liệu cho mọi trường.

Việc thanh toán 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à lượng dữ liệu được yêu cầu. Các 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, xem 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ý 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 được định dạng không chính xác). 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 để biết vị trí của địa điểm.

Tuy nhiên, nếu có địa chỉ chính xác (hoặc gần đị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 bài viết 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ả API của chúng tôi đều có giới hạn về số lượng cuộc 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à yêu cầu gây ra lỗi máy chủ mới được tính vào hạn mứ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 Maps có biện pháp thực thi theo 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 theo giây này không đảm bảo việc sử dụng thố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 trong phút đó. Cách làm này ngăn bạn sử dụng hết hạn mức trong vài giây đầu tiên hoặc hai phút bất kỳ, đồng thời giúp bạn không 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ề biện pháp thực thi này, hãy lên kế hoạch về mức sử dụng và các yêu cầu đối với hạn mức bằng cách tính trung bình mức sử dụng QPM trên QPS.

Các API GMP có hoạt độ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 của bạn.