تاریخ انتشار: 31 جولای 2025
Chrome در حال راهاندازی نسخه آزمایشی اصلی جدید از Chrome 139 برای Soft Navigations API است که قبلاً آن را آزمایش کردهایم . این آزمایش اولیه به سایتها اجازه میدهد تا API را در سایت خود با کاربران واقعی آزمایش کنند تا API را آزمایش کنند و بازخورد تیم Chrome را ارائه دهند.
ناوبری نرم چیست؟
پیمایش نرم زمانی است که جاوا اسکریپت یک ناوبری را قطع می کند (به عنوان مثال، کلیک کردن بر روی یک پیوند) و محتوای صفحه موجود را به روز می کند، نه با بارگیری یک صفحه جدید و سپس URL در نوار آدرس به روز می شود (با یک وضعیت سابقه برای اجازه دادن به پیمایش های نرم به عقب و جلو). از نظر کاربر، اینها مانند پیمایشهای معمولی به نظر میرسند، اما تا آنجا که به مرورگر مربوط میشود، صفحه همچنان صفحه اصلی است.
چرا به Soft Navigation API نیاز است؟
Soft Navigations API یک API پیشنهادی است که امکان تشخیص مبتنی بر اکتشافی به اصطلاح "ناوبری نرم" را که توسط سایت های Single Page Application (SPA) استفاده می شود، می دهد. از آنجایی که هیچ پیمایش واقعی صفحه برای یک پیمایش نرم انجام نمی شود، این بدان معنی است که برخی از اقداماتی که معمولاً برای یک ناوبری اتفاق می افتد باید به صورت دستی توسط جاوا اسکریپت مدیریت شوند. برخی از اقدامات، مانند مدیریت تاریخچه ناوبری، با APIهای فعلی امکان پذیر است. با این حال، سایر اقدامات، مانند اندازه گیری Core Web Vitals ، برای این پیمایش ها امکان پذیر نیست.
Soft Navigation API امکان مشاهده ناوبری های نرم را فراهم می کند. در حالی که جاوا اسکریپت شروع کننده ناوبری نرم (معمولاً یک چارچوب جاوا اسکریپت) از زمانی که ناوبری رخ می دهد آگاه است، جاوا اسکریپت های دیگر و خود مرورگر از این موضوع آگاه نیستند.
Core Web Vitals و SPA
یکی از محرک های اصلی برای Soft Navigation API این است که امکان اندازه گیری Core Web Vitals برای SPA ها را فراهم می کند. Core Web Vitals هم توسط مرورگر (برای ظاهر شدن در ابزارهایی مانند گزارش تجربه کاربر Chrome )، و هم توسط کتابخانه های جاوا اسکریپت نظارت بر کاربر واقعی (RUM) اندازه گیری می شود.
چارچوب های جاوا اسکریپت می توانند برخی از جنبه های حیاتی وب اصلی را اندازه گیری کنند. بهویژه Interaction to Next Paint (INP) و تغییر چیدمان تجمعی (CLS) بر پایههای اولیه (به ترتیب Event Timing API و Layout Instability API ) هستند که میتوانند در هر بازه زمانی برای محاسبه معیارهای INP و CLS اندازهگیری شوند. با این حال، معیارهای دیگر مانند بزرگترین رنگ محتوایی (LCP) فقط توسط مرورگر منتشر میشوند – بر اساس پیمایشهای صفحه و پس از تعامل نهایی میشوند .
چگونه API Soft Navigation اندازه گیری Core Web Vitals را برای SPA ها امکان پذیر می کند
اولین تکرار از Soft Navigation API، اکتشافی ناوبری نرم را با تنظیم مجدد LCP همراه کرد. پس از بازنشانی LCP میتواند برای پیمایشهای نرم برای رنگهای پر محتوا دوباره منتشر شود، که امکان اندازهگیری این معیار را برای پیمایشهای نرم فراهم میکند.
این آخرین تکرار رویکرد متفاوتی دارد و این مفاهیم را در Soft Navigation API و یک ورودی جدید عملکرد Interaction to Contentful Paint جدا میکند. مدخل interaction-contentful-paint
«رنگ محتوایی» را پس از تعامل اندازه گیری می کند. در حال حاضر، این فقط برای ناوبری های نرم منتشر می شود، اما اگر برای همه تعاملات فعال باشد، موارد استفاده بالقوه دیگر فراتر از LCP را باز می کند.
API همچنین هر یک از largest-contentful-paint
، interaction-contentful-paint
، event-timing
و layout-shift
را گسترش داد تا شامل شناسهای باشد که پیمایش ورودی برای آن است. ورودیهای عملکرد پس از رویدادی که اندازهگیری میکنند منتشر میشوند - معمولاً در زمان بیکاری. این بدان معنی است که URL اغلب تا زمانی که ورودی عملکرد منتشر می شود تغییر می کند. گنجاندن پیمایش با ورودی، اندازه گیری Core Web Vitals برای URL داده شده را بدون نیاز به تطبیق زمان های ورود عملکرد به زمان های ورود ناوبری نرم، بسیار آسان تر می کند.
چرا اکتشافی؟
Soft Navigation API یک ناوبری نرم را در صورت بروز موارد زیر در نظر می گیرد:
- یک تعامل مبتنی بر کاربر رخ می دهد (به روز رسانی URL بدون تعامل کاربر به حساب نمی آید)
- ... که منجر به تغییر DOM و رنگ می شود
- ... و به روز رسانی URL رخ می دهد
- به روز رسانی URL، از جمله تغییر سابقه.
API این رویکرد مبتنی بر اکتشافی را اتخاذ میکند تا اینکه به یک چارچوب جاوا اسکریپت اجازه دهد تا یک ناوبری نرم را "انتشار" کند، یا بر اساس Navigation API ساخته شود، زیرا این امکان را برای درک ثابتی از آنچه که یک ناوبری نرم را بدون در نظر گرفتن چارچوب یا نحوه استفاده یک توسعهدهنده از آن تشکیل میدهد، میدهد.
چارچوبها یا توسعهدهندگان ممکن است URL را برای یک پیمایش نرمافزار بهروزرسانی کنند، حتی بدون تعامل کاربر یا بهروزرسانی DOM که ما آن را بهعنوان ناوبری در نظر میگیریم. آنها همچنین ممکن است URL را در زمانهای مختلف بهروزرسانی کنند - در شروع تعامل یا فقط در پایان پس از اتمام آن - یا در هر حالتی در بین.
بهجای تکیه بر انتخابهای چارچوب، ایجاد تشخیص ناوبری نرم در مرورگر «ابتکار» متعارفی را ایجاد میکند (با بازخورد شما از این آزمایش اولیه) که به ما اجازه میدهد تا Core Web Vitals را برای پیمایشهای نرم در مقیاس اندازهگیری کنیم و چنین اندازهگیریهایی را در مقیاس قابل مقایسه کنیم.
چارچوبها و توسعهدهندگان همچنین میتوانند اکتشافیهای Soft Navigations API را نادیده بگیرند و از زمانبندی رویداد، بیثباتی طرحبندی و تعامل برای APIهای رنگمحتوا برای اندازهگیری معیارهای عملکرد اضافی آنطور که میخواهند استفاده کنند، اما ما Core Web Vitals را توصیه میکنیم که از اکتشافی استفاده کنند تا امکان اندازهگیری در سایتها را فراهم کند.
برای آزمایش Soft Navigation API به کمک نیاز است
برای آزمایش Soft Navigations API به کمک نیاز داریم تا بررسی کنیم که آیا اکتشافی به درستی با انتظارات شما از زمانی که یک ناوبری نرم اتفاق افتاده است مطابقت دارد یا خیر. آیا مواردی وجود دارد که API زمانی که پیمایش های نرم را رخ داده اند گزارش نمی کند؟ در مقابل، آیا API بیش از پیمایشهایی را تکرار میکند که شما آن را ناوبری نرم نمیدانید؟
نمونههایی که مشاهده کردهایم باعث ایجاد مشکلات میشوند عبارتند از زمانی که یک URL به جای افزودن تاریخچه، با replaceState
بهروزرسانی میشود، یا زمانی که پیمایشی که توسط کاربر آغاز نشده رخ میدهد (مثلاً خروج از سیستم در زمان پایان). هر دو مورد با عدم تطابق با اکتشافی توضیح داده شده اند و تیم Chrome با عدم درج این موارد راحت است، اما ما می خواهیم در صورت موافقت از توسعه دهندگان وب بشنویم. و ما بهویژه میخواهیم در مورد مواردی بشنویم که به نظر میرسد اکتشافیها برآورده میشوند اما API هنوز ناوبری نرم را تشخیص نمیدهد.
علاوه بر این، ما میخواهیم بدانیم که آیا این API، و Interaction to Contentful Paint بدوی، به مورد استفاده اولیه اجازه اندازهگیری Core Web Vitals برای SPAها میپردازد یا خیر.
ما میخواهیم API تا حد امکان مفید باشد و این امر قبل از راهاندازی و شروع سایتها بسته به پیادهسازی بسیار آسانتر است. بنابراین، از توسعه دهندگان SPA و کسانی که علاقه مند به اندازه گیری عملکرد وب برای این سایت ها هستند، می خواهیم که این API را امتحان کنند و به ما اطلاع دهند که چگونه برای شما کار می کند.
چگونه تست کنیم
API را میتوان به صورت محلی با پرچمهای Chrome یا گزینههای خط فرمان آزمایش کرد. علاوه بر این می توان آن را در زمینه با آزمایش مبدا آزمایش کرد.
برای اطلاعات بیشتر از جزئیات فنی API و به ویژه نحوه اندازه گیری Core Web Vitals به اسناد ما یا مخزن GitHub مراجعه کنید. علاوه بر این یک نسخه ناوبری نرم تجربی از کتابخانه web-vitals در دسترس است.
بازخورد
ما فعالانه به دنبال بازخورد در مورد این آزمایش در مکان های زیر هستیم:
- بازخورد در مورد API باید به عنوان مشکل در GitHub مطرح شود.
- اگر این هنوز یکی از مشکلات شناخته شده نیست، اشکالات در اجرای Chromium باید در ردیاب مشکل کروم ایجاد شود .
- بازخورد کلی بخش حیاتی وب را می توان در web-vitals-feedback@googlegroups.com به اشتراک گذاشت.
اگر شک دارید زیاد نگران نباشید، ما ترجیح میدهیم بازخورد را در هر دو مکان بشنویم و با خوشحالی مشکلات را در هر دو مکان بررسی میکنیم و مسائل را به مکان صحیح هدایت میکنیم.