راهنمای بهینه سازی

این راهنما چندین استراتژی را برای بهینه‌سازی استفاده از Google Maps API از نظر امنیت، عملکرد و مصرف شرح می‌دهد.

امنیت

بررسی بهترین شیوه های امنیتی

کلیدهای API اعتبارنامه‌های پروژه محور هستند که مستحق اقدامات احتیاطی مشابه شناسه‌های کاربری و رمز عبور هستند. بهترین روش‌های امنیتی API را مرور کنید تا کلیدهای خود را در برابر استفاده ناخواسته ایمن کنید که می‌تواند منجر به استفاده غیرمجاز از سهمیه و هزینه‌های غیرمنتظره از حساب شما شود.

استفاده از کلیدهای API برای دسترسی به Maps API

کلیدهای API روش احراز هویت ترجیحی برای دسترسی به APIهای Google Maps APIs هستند. در حالی که استفاده از شناسه های سرویس گیرنده در حال حاضر هنوز پشتیبانی می شود، کلیدهای API از کنترل های امنیتی دقیق تری پشتیبانی می کنند و می توانند برای کار با آدرس های وب خاص، آدرس های IP و SDK های تلفن همراه (Android و iOS) تنظیم شوند. برای اطلاعات در مورد ایجاد و ایمن کردن یک کلید API، به صفحه «استفاده از کلید API» برای هر API یا SDK بروید. (به عنوان مثال، برای Maps JavaScript API، از صفحه آن در استفاده از کلید API دیدن کنید.)

کارایی

استفاده از عقب نشینی نمایی برای رسیدگی به خطاها

اگر برنامه‌های شما به دلیل تلاش‌های بیش از حد برای فراخوانی یک API در مدت زمان کوتاهی با خطاهایی مواجه شدند، مانند خطاهای QPS، برای پردازش درخواست‌ها از پس‌انداز نمایی استفاده کنید.

عقب نشینی نمایی بیشتر برای خطاهای 500 مفید است. برای اطلاعات بیشتر، به مدیریت کدهای وضعیت بازگشت HTTP مراجعه کنید.

به طور خاص، سرعت درخواست های خود را تنظیم کنید. در کد خود، یک دوره انتظار S ثانیه بین پرس و جوها اضافه کنید. اگر پرس و جو همچنان منجر به خطای QPS شد، مدت زمان انتظار را دو برابر کنید و سپس درخواست دیگری ارسال کنید. تنظیم دوره انتظار را تا زمانی که پرس و جو بدون خطا برگردد ادامه دهید.

ارسال درخواست های تعامل کاربر در صورت تقاضا

درخواست‌هایی به API‌هایی که شامل تعامل کاربر می‌شوند باید فقط در صورت درخواست ارسال شوند. این به این معنی است که منتظر بمانید تا کاربر نهایی یک عمل (مانند on-click ) را برای شروع درخواست API انجام دهد، سپس از نتایج برای بارگیری نقشه، تعیین مقصد یا نمایش اطلاعات مناسب استفاده کنید. استفاده از رویکرد درخواستی از درخواست‌های غیرضروری به APIها جلوگیری می‌کند و مصرف API را کاهش می‌دهد.

اجتناب از نمایش محتوای همپوشانی زمانی که نقشه در حال حرکت است

از استفاده از Draw() برای نمایش محتوای همپوشانی سفارشی روی نقشه در همان زمانی که کاربر ممکن است نقشه را جابجا کند، خودداری کنید. از آنجایی که هر بار که کاربر نقشه را جابه‌جا می‌کند، نقشه دوباره ترسیم می‌شود، قرار دادن محتوای هم‌زمان روی نقشه می‌تواند باعث تاخیر یا لکنت بصری شود. فقط زمانی محتوای همپوشانی را از نقشه اضافه یا حذف کنید که کاربر حرکت یا بزرگنمایی را متوقف کند.

اجتناب از عملیات فشرده در روش های Draw

به عنوان یک قاعده کلی، اجتناب از عملیات غیر ترسیمی فشرده در یک روش Draw() تمرین خوبی است. به عنوان مثال، در کد متد Draw() از موارد زیر اجتناب کنید:

  • کوئری هایی که حجم زیادی از محتوا را برمی گرداند.
  • تغییرات زیادی در داده های نمایش داده می شود.
  • دستکاری بسیاری از عناصر Document Object Model (DOM).

این عملیات می تواند عملکرد را کاهش دهد و در هنگام نمایش نقشه، تاخیر یا لکنت بصری را ایجاد کند.

استفاده از تصاویر شطرنجی برای نشانگرها

هنگام افزودن نشانگرها برای شناسایی مکان روی نقشه، از تصاویر شطرنجی، مانند تصاویر با فرمت PNG. یا JPG. استفاده کنید. از استفاده از تصاویر گرافیکی برداری مقیاس پذیر (SVG) خودداری کنید، زیرا رندر کردن تصاویر SVG می تواند در هنگام ترسیم مجدد نقشه، تاخیر ایجاد کند.

بهینه سازی نشانگرها

بهینه سازی عملکرد را با ارائه بسیاری از نشانگرها به عنوان یک عنصر ثابت افزایش می دهد. این در مواردی که به تعداد زیادی نشانگر نیاز است مفید است. به طور پیش فرض، Maps JavaScript API تصمیم می گیرد که آیا یک نشانگر بهینه شود یا خیر. هنگامی که تعداد زیادی نشانگر وجود دارد، Maps JavaScript API سعی می کند نشانگرها را با بهینه سازی ارائه کند. همه نشانگرها را نمی توان بهینه کرد. در برخی شرایط، Maps JavaScript API ممکن است نیاز به ارائه نشانگرها بدون بهینه سازی داشته باشد. غیرفعال کردن رندر بهینه برای GIF یا PNG متحرک، یا زمانی که هر نشانگر باید به عنوان یک عنصر DOM جداگانه ارائه شود.

ایجاد خوشه ها برای مدیریت نمایش نشانگر

برای کمک به مدیریت نمایش نشانگرها برای شناسایی مکان ها بر روی نقشه، با استفاده از کتابخانه نشانگر خوشه، یک خوشه نشانگر ایجاد کنید. کتابخانه Marker Clusterer شامل گزینه هایی برای موارد زیر است:

  • اندازه شبکه، برای تعیین تعداد نشانگرها برای گروه بندی در یک خوشه.
  • حداکثر زوم، برای تعیین حداکثر سطح بزرگنمایی که در آن خوشه نمایش داده شود.
  • مسیرهای تصویر، برای استفاده از تصاویر گرافیکی به عنوان نمادهای نشانگر.

مصرف

برای برنامه ریزی بودجه و کنترل هزینه های خود، موارد زیر را انجام دهید:

  • یک هشدار بودجه تنظیم کنید تا نحوه افزایش هزینه های شما به یک مقدار خاص را پیگیری کنید. تنظیم بودجه استفاده از API را محدود نمی کند - فقط زمانی به شما هشدار می دهد که هزینه های شما به مقدار مشخص شده شما نزدیک شود.
  • مصرف روزانه API خود را محدود کنید تا هزینه های خود را برای API های قابل پرداخت مدیریت کنید. با تعیین سقف برای درخواست ها در روز ، می توانید هزینه های خود را محدود کنید. از یک معادله ساده برای تعیین سقف روزانه خود، بسته به مقداری که می خواهید خرج کنید، استفاده کنید: (هزینه ماهانه/ قیمت برای هر کدام )/30 = سقف درخواست در روز (برای یک API). پیاده سازی خاص شما ممکن است از چندین API قابل پرداخت استفاده کند، بنابراین معادله را در صورت نیاز تنظیم کنید. اعتبار 200 دلاری Google Maps API هر ماه در دسترس است، بنابراین آن را در محاسبات خود لحاظ کنید.
  • از چندین پروژه برای جداسازی، اولویت بندی و پیگیری استفاده خود استفاده کنید. به عنوان مثال، فرض کنید به طور منظم از API های پلتفرم نقشه های گوگل در آزمایشات خود استفاده می کنید. با ایجاد یک پروژه جداگانه برای آزمایش خود - با سهمیه ها و کلیدهای API خود - می توانید به طور کامل تست کنید و در عین حال از هزینه های غیرمنتظره غافلگیرانه محافظت کنید.

مدیریت مصرف در Maps

استفاده از یک نقشه در هر صفحه راه خوبی برای بهینه‌سازی نمایش نقشه‌ها است، زیرا کاربران معمولاً تنها با یک نقشه در یک زمان تعامل دارند. برنامه شما می تواند نقشه را دستکاری کند تا بسته به تعامل و نیاز مشتری، مجموعه داده های مختلفی را نمایش دهد.

استفاده از تصاویر ثابت

درخواست‌هایی که از تصاویر پویا استفاده می‌کنند (نقشه‌های پویا و نمای خیابان پویا) هزینه بیشتری نسبت به نقشه‌های استاتیک و نمای خیابان استاتیک دارند. اگر تعامل کاربر با نقشه یا نمای خیابان (بزرگنمایی یا جابجایی) را پیش‌بینی نمی‌کنید، از نسخه‌های ثابت این APIها استفاده کنید.

تصاویر کوچک - نقشه ها و عکس های بسیار کوچک - یکی دیگر از کاربردهای خوب برای Static Maps و Static Street View است. این موارد با نرخ پایین‌تری و پس از تعامل با کاربر (روی کلیک) صورت‌حساب می‌شوند و می‌توانند کاربران را به نسخه پویا برای تجربه کامل Google Maps ببرند.

با استفاده از Maps Embed API

می‌توانید از Maps Embed API برای اضافه کردن یک نقشه با یک نشانگر واحد یا یک نقشه پویا، رایگان استفاده کنید. از Maps Embed API برای برنامه‌هایی که نیاز به یک نشانگر واحد و سفارشی‌سازی نقشه نیست، استفاده کنید. درخواست‌های Maps Embed API با استفاده از حالت مسیرها، حالت مشاهده یا حالت جستجو صورت‌حساب می‌شوند (برای جزئیات به جدول قیمت‌گذاری مراجعه کنید).

استفاده از SDK نقشه های تلفن همراه برای برنامه های تلفن همراه

برای برنامه های تلفن همراه، هنگام نمایش نقشه از Maps SDK برای Android یا Maps SDK برای iOS استفاده کنید. هنگامی که الزامات استفاده از SDKهای تلفن همراه را رد می کند، از Maps Static API یا Maps JavaScript API استفاده کنید.

مدیریت مصرف در مسیرها

نقاط بین مسیرهای API محدود کردن مسیرها

در صورت امکان، ورودی های کاربر در یک پرس و جو را به حداکثر 10 نقطه بین محدود کنید. درخواست هایی که حاوی بیش از 10 ایستگاه بین راه هستند با نرخ بالاتری صورتحساب می شوند.

استفاده از بهینه سازی Directions API برای مسیریابی بهینه

درخواست‌هایی که از آرگومان بهینه‌سازی نقطه راه استفاده می‌کنند با نرخ بالاتری صورت‌حساب می‌شوند. برای اطلاعات بیشتر، بهینه سازی نقاط راه را ببینید.

آرگومان بهینه‌سازی نقاط بین راه را برای اطمینان از مسیریابی بهینه مرتب می‌کند، به این معنی که سفر از A به E در صورت بهینه‌سازی (ABCDE) در مقابل توالی تصادفی یک مسیر غیربهینه (مانند ADBCE) تجربه بهتری است.

استفاده از مدل‌های ترافیک بلادرنگ در Directions API و Distance Matrix API

درخواست‌های Directions API و Distance Matrix API که شامل مدل‌های ترافیک هم‌زمان هستند، با نرخ بالاتری صورت‌حساب می‌شوند. مدل‌های ترافیک هم‌زمان با تنظیم زمان حرکت روی now فعال می‌شوند.

اگر مدل‌های ترافیک از یک درخواست حذف شوند، نتایج فقط بر اساس عوامل فیزیکی است: جاده‌ها، مسافت و محدودیت‌های سرعت.

استفاده از مسیر طی شده و نزدیکترین جاده زمانی که داده‌های GPS دقیق نیستند

ویژگی‌های Maps Roads API، مسیر طی شده و نزدیک‌ترین جاده، در ردیف پیشرفته گنجانده شده‌اند و با نرخ بالاتری صورت‌حساب دریافت می‌کنند. از این ویژگی‌ها در جایی استفاده کنید که داده‌های GPS نادرست هستند و Roads API می‌تواند به تعیین جاده صحیح کمک کند. محدودیت سرعت، یکی دیگر از ویژگی های Roads API، فقط برای مشتریان ردیابی دارایی در دسترس است.

نمونه برداری از مکان های محدودیت سرعت در فواصل زمانی 5 تا 15 دقیقه ای

برای به حداقل رساندن حجم تماس ها با سرویس Maps Roads API Speed ​​Limit، مکان دارایی های خود را در فواصل زمانی 5 تا 15 دقیقه نمونه برداری کنید. مقدار دقیق به سرعت حرکت یک دارایی بستگی دارد. اگر دارایی ثابت باشد، یک نمونه مکان کافی است. نیازی به برقراری تماس های متعدد نیست.

برای به حداقل رساندن تأخیر کلی، پس از جمع‌آوری داده‌ها به جای تماس با API هر بار که مکان دارایی تلفن همراه دریافت می‌شود، با سرویس محدودیت سرعت تماس بگیرید.

مدیریت مصرف در Places

بهینه سازی پیاده سازی های تکمیل خودکار مکان

برای بهینه سازی هزینه استفاده از تکمیل خودکار مکان:

  • از ماسک‌های فیلد در ویجت‌های تکمیل خودکار جاوا اسکریپت ، اندروید و iOS استفاده کنید تا فقط فیلدهای داده مکان مورد نیازتان را برگردانید.

  • انتخاب گزینه های صورتحساب به مورد استفاده شما بستگی دارد. بسته به اینکه پیاده سازی شما از جلسات Autcomplete استفاده می کند یا خیر، از SKUهای تکمیل خودکار - برای هر درخواست یا تکمیل خودکار - در هر جلسه هزینه دریافت می کنید.

برای اطلاعات بیشتر و راهنمایی در مورد انتخاب گزینه مناسب برای مورد استفاده خود، به بهترین شیوه های بهینه سازی هزینه تکمیل خودکار مکان مراجعه کنید.

برگرداندن داده‌ها برای فیلدهای خاص در جزئیات مکان و درخواست‌های جستجوی مکان

می‌توانید درخواست‌های «جزئیات مکان» و «جستجوی مکان» را برای بازگرداندن داده‌ها برای فیلدهای خاص مورد استفاده در برنامه‌تان سفارشی کنید. این فیلدها به دسته‌های اساسی ، تماس و جو تقسیم می‌شوند. درخواست هایی که هیچ فیلدی را مشخص نمی کنند، داده هایی را برای همه فیلدها دریافت خواهند کرد.

صورت‌حساب برای درخواست‌های جزئیات مکان براساس نوع و مقدار داده‌های درخواستی است. درخواست هایی که هیچ فیلدی را مشخص نکرده باشند با نرخ کامل صورتحساب خواهند شد. برای اطلاعات بیشتر، به جزئیات مکان و جستجوی مکان مراجعه کنید.

کاهش هزینه ها با استفاده از Geocoding API

اگر برنامه شما آدرس‌های تایپ شده توسط کاربر را مدیریت می‌کند، آدرس‌ها گاهی مبهم هستند (ناقص، غلط املایی یا قالب‌بندی ضعیف). آدرس‌ها را با استفاده از تکمیل خودکار ابهام‌زدایی کنید، سپس از شناسه‌های مکان برای دریافت مکان‌های مکان استفاده کنید.

با این حال، اگر آدرس دقیق (یا نزدیک به آن) دارید، می‌توانید با استفاده از Geocoding به جای Autocomplete، هزینه‌ها را کاهش دهید. برای جزئیات بیشتر، به بهترین روش‌های آدرس‌دهی جغرافیایی مراجعه کنید.

سهمیه های پلتفرم نقشه های گوگل چگونه کار می کنند

همه API های ما محدودیت هایی برای تعداد تماس های هر مشتری دارند. این سهمیه ها بر اساس هر دقیقه پیکربندی می شوند. هنگامی که در یک دقیقه به سهمیه تماس‌ها در یک API معین رسیدید، تماس‌های بعدی تا دقیقه بعد پذیرفته نمی‌شوند.

فقط درخواست‌های موفق و درخواست‌هایی که باعث خطای سرور می‌شوند در سهمیه حساب می‌شوند. درخواست‌هایی که احراز هویت ناموفق هستند در سهمیه حساب نمی‌شوند.

چندین API Maps علاوه بر اجرای سهمیه در دقیقه، اجرای هر ثانیه نیز دارند. این اجرا در هر ثانیه استفاده یکنواخت را در کل دقیقه تضمین نمی کند و همچنین مانع از رسیدن شما به سهمیه استفاده در آن دقیقه نمی شود. این شما را از استفاده از تمام سهمیه خود در یک یا دو ثانیه اول هر دقیقه باز می دارد و از شما در برابر اختلالات سرویس در صورت افزایش ناگهانی استفاده محافظت می کند. برای مقابله با این تفاوت‌های اجرایی، استفاده از سهمیه و نیازمندی‌های خود را با میانگین‌گیری استفاده از QPM خود در سراسر QPS برنامه‌ریزی کنید.

APIهای GMP که این اعمال در هر ثانیه را دارند عبارتند از Directions API، Distance Matrix API، Elevation API، Geocoding API، Places API و Roads API.

هزینه های خود را برای هر محصول GMP API بر اساس حجم کل درخواست خود تخمین بزنید .