توسعه صفحات وب و برنامهها برای دستگاههای همراه در مقایسه با توسعه صفحه وب برای مرورگرهای وب رایانه چالشهای متفاوتی دارد. روشهای زیر میتواند به شما کمک کند تا مؤثرترین برنامه وب را برای Android و سایر دستگاههای همراه ارائه دهید.
- دستگاههای همراه را به نسخه همراه اختصاصی وبسایتتان هدایت کنید. چندین روش برای انجام این کار بااستفاده از تغییر مسیرهای سمت سرور وجود دارد. یکی از روشهای متداول «بو کشیدن» رشته «نماینده کاربر» است که مرورگر وب ارائه میکند. برای تعیین اینکه نسخه تلفن همراه سایتتان ارائه شود یا نه، بهدنبال رشته «تلفن همراه» در «نماینده کاربر» بگردید.
- از HTML5
برای دستگاههای همراه استفاده کنید. HTML5 رایجترین زبان نشانهگذاری است که برای وبسایتهای تلفن همراه استفاده میشود.
این استاندارد توسعه اولویتدهی به تلفن همراه را تشویق میکند تا اطمینان حاصل شود که وبسایتها در انواع مختلفی از دستگاهها کار میکنند. برخلاف زبانهای وب قبلی، HTML5 از اعلانهای سادهتر
<DOCTYPE>وcharsetاستفاده میکند:<!DOCTYPE html> ... <meta charset="UTF-8">
- از فراداده نمای هدف برای تغییر اندازه مناسب صفحه وب خود استفاده کنید. در سند
<head>، فرادادهای ارائه دهید که مشخص کند میخواهید نمای مرورگر چگونه صفحه وب شما را ارائه کند. برای مثال، فراداده نمای شما میتواند ارتفاع و عرض نمای مرورگر، مقیاس صفحه اولیه، و تراکم صفحه هدف را مشخص کند.مثال زیر نحوه تنظیم فراداده نمای هدف را نشان میدهد:
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no">
برای اطلاعات بیشتر درباره نحوه استفاده از فراداده نمای هدف برای دستگاههای مجهز به Android، پشتیبانی از صفحههای مختلف در برنامههای وب را بخوانید.
- از چیدمان خطی عمودی استفاده کنید. هنگام پیمایش در صفحهتان، کاربر نباید نیاز به پیمایش به چپ و راست داشته باشد. پیمایش به بالا و پایین برای کاربر آسانتر است و صفحهتان را سادهتر میکند.
- ارتفاع و عرض چیدمان را روی
match_parentتنظیم کنید. تنظیم ارتفاع و عرض شیءWebViewرویmatch_parentباعث میشود نماهای برنامهتان بهدرستی اندازهگذاری شود. توصیه میکنیم ارتفاع را رویwrap_contentتنظیم نکنید زیرا باعث اندازهبندی نادرست میشود. بهطور مشابه، تنظیم عرض چیدمان رویwrap_contentپشتیبانی نمیشود و باعث میشودWebViewشما بهجای آن از عرض والد خود استفاده کند. بهدلیل این رفتار، همچنین مهم است مطمئن شوید که هیچکدام از اشیای چیدمان ولی شیءWebViewشما ارتفاع و عرضشان رویwrap_contentتنظیم نشده باشد. - از درخواستهای متعدد فایل اجتناب کنید. چون دستگاههای همراه معمولاً سرعت اتصال
کمتری نسبت به رایانههای رومیزی دارند، صفحه خود را تا حد امکان سریع بار کنید. یک راه برای سرعت بخشیدن به آن این است که
از بار کردن فایلهای اضافی مانند برگه سبک نگارش و فایلهای اسکریپت در
<head>اجتناب کنید. همچنین، انجام تجزیهوتحلیل تلفن همراه با Google PageSpeed Insights را برای پیشنهادهای بهینهسازی دقیق مختص برنامهتان درنظر بگیرید. - اگر به بارگیری خودکار نماد وبسایت نیاز ندارید، آن را غیرفعال کنید.
بهطور پیشفرض،
WebViewهروقت سایتی درطول پیمایش بازدید شود، نماد وبسایت را بهطور خودکار بارگیری میکند.WebViewدو نسخه از هر نماد وبسایت بارگیریشده را نگه میدارد (یکی در Java و دیگری در حافظه بومی)، بنابراین غیرفعال کردن بارگیری نماد وبسایت باعث صرفهجویی در حافظه (تقریباً ۸ کیلوبایت برای هر نمونهWebView) و کاهش مصرف پهنای باند میشود. اگر برنامهتان از نماد وبسایت استفاده نمیکند یا آن را نمایش نمیدهد، ازWebSettingsCompat.setDownloadFaviconsEnabled()از کتابخانه Jetpack Webkit برای غیرفعال کردن بارگیریهای خودکار استفاده کنید:کاتلین
// In this example, "myWebView" is an instance of WebView. if (WebViewFeature.isFeatureSupported(WebViewFeature.DOWNLOAD_FAVICONS_ENABLED)) { WebSettingsCompat.setDownloadFaviconsEnabled(myWebView.settings, false) }
جاوا
// In this example, "myWebView" is an instance of WebView. if (WebViewFeature.isFeatureSupported(WebViewFeature.DOWNLOAD_FAVICONS_ENABLED)) { WebSettingsCompat.setDownloadFaviconsEnabled(myWebView.getSettings(), false); }
- مدیریت کردن وضعیت ذخیرهشده و اجتناب از محدودیتهای تراکنش. اگر وضعیت
WebViewرا درطول رویدادهای چرخه حیات بااستفاده ازsaveState(Bundle)ذخیره میکنید، بااستفاده ازWebViewCompat.saveState()محدودیتهای اندازه بار داده را اعمال کنید تا از حد مجاز ۱ مگابایتیsavedInstanceStateAndroid فراتر نروید. برای اطلاعات بیشتر، به مدیریت کارآمد وضعیت WebView مراجعه کنید. - اتصالهای شبکه و بار کردن صفحه را با میاناهای برنامهسازی کاربردی بار کردن حدسی بهینهسازی کنید.
برای کاهش تأخیر پیمایش، از Jetpack Webkit API برای آمادهسازی اتصالات شبکه و محتوا ازقبل استفاده کنید.
Profile.addQuicHintsرا فراخوانی کنید تا پشتیبانی HTTP/3 ازطریق QUIC ازپیش تکمیل شود تا «وبنما» بتواند بلافاصله در اولین اتصال از QUIC استفاده کند، و ازProfile.preconnectبرای پیشگرم کردن سوکتهای شبکه استفاده کنید. وقتی نشانیهای وب مقصد مشخص یا محتمل هستند، ازProfile.prefetchUrlAsyncیاWebViewCompat.prerenderUrlAsyncبرای واکشی یا پردازاندن صفحهها در پسزمینه استفاده کنید. برای اطلاعات بیشتر، بار کردن حدسی در WebView را بخوانید. - اگر به بارگیری خودکار نماد وبسایت نیاز ندارید، آن را غیرفعال کنید.
بهطور پیشفرض،
WebViewهروقت سایتی درطول پیمایش بازدید شود، نماد وبسایت را بهطور خودکار بارگیری میکند.WebViewدو نسخه از هر نماد وبسایت بارگیریشده را نگه میدارد (یکی در Java و دیگری در حافظه بومی)، بنابراین غیرفعال کردن بارگیری نماد وبسایت باعث صرفهجویی در حافظه (تقریباً ۸ کیلوبایت برای هر نمونهWebView) و کاهش مصرف پهنای باند میشود. اگر برنامهتان از نماد وبسایت استفاده نمیکند یا آن را نمایش نمیدهد، ازWebSettingsCompat.setDownloadFaviconsEnabled()از کتابخانه Jetpack Webkit برای غیرفعال کردن بارگیریهای خودکار استفاده کنید:کاتلین
// In this example, "myWebView" is an instance of WebView. if (WebViewFeature.isFeatureSupported(WebViewFeature.DOWNLOAD_FAVICONS_ENABLED)) { WebSettingsCompat.setDownloadFaviconsEnabled(myWebView.settings, false) }
جاوا
// In this example, "myWebView" is an instance of WebView. if (WebViewFeature.isFeatureSupported(WebViewFeature.DOWNLOAD_FAVICONS_ENABLED)) { WebSettingsCompat.setDownloadFaviconsEnabled(myWebView.getSettings(), false); }
- مدیریت کردن وضعیت ذخیرهشده و اجتناب از محدودیتهای تراکنش. اگر وضعیت
WebViewرا درطول رویدادهای چرخه حیات بااستفاده ازsaveState(Bundle)ذخیره میکنید، بااستفاده ازWebViewCompat.saveState()محدودیتهای اندازه بار داده را اعمال کنید تا از حد مجاز ۱ مگابایتیsavedInstanceStateAndroid فراتر نروید. برای اطلاعات بیشتر، به مدیریت کارآمد وضعیت WebView مراجعه کنید.
منابع بیشتر
- بار کردن حدسی در WebView
- مدیریت کارآمد وضعیت WebView
- رابط کاربری تصویر پیکسلی در WebView
- آشنایی با طراحی واکنشگرا
- تصاویر با DPI بالا برای تراکمهای پیکسل متغیر
- روالهای مطلوب وب تلفن همراه
- ساخت سریعتر وب