প্রকাশিত: ৩১ জুলাই, ২০২৫
ক্রোম ১৩৯ থেকে , আমরা পূর্বে পরীক্ষা-নিরীক্ষা করে আসা সফট নেভিগেশনস এপিআই-এর জন্য ক্রোম একটি নতুন অরিজিন ট্রায়াল চালু করছে। এই অরিজিন ট্রায়ালটি সাইটগুলোকে তাদের সাইটে আসল ব্যবহারকারীদের দিয়ে এপিআইটি পরীক্ষা করার এবং ক্রোম টিমকে মতামত জানানোর সুযোগ দেবে।
সফট নেভিগেশন বলতে কী বোঝায়?
সফট নেভিগেশন হলো এমন একটি প্রক্রিয়া যেখানে জাভাস্ক্রিপ্ট কোনো নেভিগেশনকে (যেমন, কোনো লিঙ্কে ক্লিক করা) বাধা দেয় এবং নতুন কোনো পৃষ্ঠা লোড না করে, বিদ্যমান পৃষ্ঠার বিষয়বস্তুই আপডেট করে। এর ফলে অ্যাড্রেস বারে থাকা URL-টিও আপডেট হয়ে যায় (এবং সামনে ও পেছনে সফট নেভিগেশনের জন্য একটি হিস্ট্রি স্টেটও থাকে)। ব্যবহারকারীর কাছে এগুলো প্রচলিত নেভিগেশনের মতোই দেখায়, কিন্তু ব্রাউজারের কাছে পৃষ্ঠাটি মূল পৃষ্ঠাই থেকে যায়।
সফট নেভিগেশন এপিআই কেন প্রয়োজন
সফট নেভিগেশনস এপিআই হলো একটি প্রস্তাবিত এপিআই, যা সিঙ্গেল পেজ অ্যাপ্লিকেশন (এসপিএ) সাইটগুলোতে ব্যবহৃত তথাকথিত "সফট নেভিগেশন" হিউরিস্টিক-ভিত্তিক পদ্ধতিতে শনাক্ত করার সুযোগ দেয়। যেহেতু একটি সফট নেভিগেশনের ক্ষেত্রে কোনো প্রকৃত পেজ নেভিগেশন ঘটে না, তাই এর অর্থ হলো, একটি নেভিগেশনের জন্য সাধারণত যে কাজগুলো করা হয়, সেগুলো জাভাস্ক্রিপ্টের মাধ্যমে ম্যানুয়ালি পরিচালনা করতে হয়। নেভিগেশন হিস্ট্রি ম্যানেজমেন্টের মতো কিছু কাজ বর্তমান এপিআইগুলো দিয়েই করা সম্ভব। তবে, কোর ওয়েব ভাইটালস পরিমাপের মতো অন্যান্য কাজগুলো এই নেভিগেশনগুলোর জন্য করা সম্ভব নয়।
সফট নেভিগেশন এপিআই সফট নেভিগেশন পর্যবেক্ষণের সুযোগ দেয়। যদিও সফট নেভিগেশন শুরুকারী জাভাস্ক্রিপ্ট (সাধারণত একটি জাভাস্ক্রিপ্ট ফ্রেমওয়ার্ক) নেভিগেশন কখন ঘটে তা জানতে পারে, অন্য জাভাস্ক্রিপ্ট এবং স্বয়ং ব্রাউজার তা জানতে পারে না।
কোর ওয়েব ভাইটালস এবং এসপিএ
সফট নেভিগেশন এপিআই-এর অন্যতম প্রধান উদ্দেশ্য হলো এসপিএ-এর জন্য কোর ওয়েব ভাইটালস পরিমাপ করা। কোর ওয়েব ভাইটালস পরিমাপ করা হয় ব্রাউজারের মাধ্যমে (যা ক্রোম ইউজার এক্সপেরিয়েন্স রিপোর্টের মতো টুলিং-এ প্রদর্শিত হয়) এবং রিয়েল ইউজার মনিটরিং (RUM) জাভাস্ক্রিপ্ট লাইব্রেরির মাধ্যমে।
জাভাস্ক্রিপ্ট ফ্রেমওয়ার্কগুলো কোর ওয়েব ভাইটালস-এর কিছু দিক পরিমাপ করতে পারে। বিশেষ করে, ইন্টার্যাকশন টু নেক্সট পেইন্ট (INP) এবং কিউমুলেটিভ লেআউট শিফট (CLS) এমন কিছু প্রিমিটিভের (যথাক্রমে ইভেন্ট টাইমিং এপিআই এবং লেআউট ইনস্ট্যাবিলিটি এপিআই ) উপর ভিত্তি করে তৈরি, যেগুলোকে যেকোনো সময়সীমা জুড়ে পরিমাপ করে INP এবং CLS মেট্রিকগুলো গণনা করা যায়। তবে, যেহেতু ব্রাউজার পেজ নেভিগেশন এবং ইন্টার্যাকশনের উপর ভিত্তি করে লার্জেস্ট কনটেন্টফুল পেইন্ট (LCP) রিপোর্ট করে এবং চূড়ান্ত করে, তাই জাভাস্ক্রিপ্ট ফ্রেমওয়ার্কগুলো এসপিএ-এর প্রাথমিক লোডিং পারফরম্যান্স ছাড়া অন্য কোনো কিছু দেখতে পায় না।
সফট নেভিগেশন এপিআই কীভাবে এসপিএ-এর জন্য কোর ওয়েব ভাইটালস পরিমাপ করতে সাহায্য করে
সফট নেভিগেশন এপিআই-এর প্রথম সংস্করণটি সফট নেভিগেশন হিউরিস্টিকসকে এলসিপি (LCP) রিসেট করার সাথে সংযুক্ত করেছিল। রিসেট করার পর, নতুন কন্টেন্টফুল পেইন্টের জন্য সফট নেভিগেশনের ক্ষেত্রে এলসিপি পুনরায় নির্গত করা যেতে পারে, যা সফট নেভিগেশনের জন্য এই মেট্রিকটি পরিমাপের সুযোগ করে দেয়।
এই সর্বশেষ সংস্করণটি একটি ভিন্ন পদ্ধতি অবলম্বন করে এবং এই ধারণাগুলোকে সফট নেভিগেশন এপিআই (Soft Navigation API) ও একটি নতুন ‘ইন্টারঅ্যাকশন টু কন্টেন্টফুল পেইন্ট’ (Interaction to Contentful Paint) পারফরম্যান্স এন্ট্রিতে পৃথক করে। ‘ interaction-contentful-paint এন্ট্রিটি ইন্টারঅ্যাকশনের পরে ‘কন্টেন্টফুল পেইন্ট’ পরিমাপ করে। আপাতত, এটি শুধুমাত্র সফট নেভিগেশনের জন্য নির্গত হয়, কিন্তু সমস্ত ইন্টারঅ্যাকশনের জন্য সক্রিয় করা হলে এটি এলসিপি (LCP)-র বাইরেও অন্যান্য সম্ভাব্য ব্যবহারের ক্ষেত্র উন্মুক্ত করে।
এপিআইটি largest-contentful-paint , interaction-contentful-paint , event-timing , এবং layout-shift পারফরম্যান্স এন্ট্রিগুলোর প্রত্যেকটিকে আরও প্রসারিত করেছে, যাতে এন্ট্রিটি যে নেভিগেশনের জন্য, তার একটি আইডেন্টিফায়ার অন্তর্ভুক্ত করা যায়। পারফরম্যান্স এন্ট্রিগুলো যে ইভেন্ট পরিমাপ করে, তার পরে—সাধারণত নিষ্ক্রিয় সময়ে—ইমিট করা হয়। এর মানে হলো, পারফরম্যান্স এন্ট্রিটি ইমিট হওয়ার আগেই ইউআরএলটি প্রায়শই পরিবর্তিত হয়ে যায়। এন্ট্রির সাথে নেভিগেশনটি অন্তর্ভুক্ত করার ফলে পারফরম্যান্স এন্ট্রির সময়ের সাথে সফট নেভিগেশন এন্ট্রির সময় মেলানোর প্রয়োজন ছাড়াই প্রদত্ত ইউআরএলটির জন্য কোর ওয়েব ভাইটালস পরিমাপ করা অনেক সহজ হয়ে যায়।
হিউরিস্টিক কেন?
সফট নেভিগেশন এপিআই নিম্নলিখিত ঘটনা ঘটলে একটি সফট নেভিগেশন বিবেচনা করে:
- একটি ব্যবহারকারী-ভিত্তিক মিথস্ক্রিয়া ঘটে (ব্যবহারকারীর মিথস্ক্রিয়া ছাড়া URL আপডেট গণনা করা হয় না)
- … যার ফলে DOM-এ পরিবর্তন এবং একটি পেইন্ট হয়
- … এবং একটি URL আপডেট ঘটে
- ইউআরএল আপডেট, যার মধ্যে হিস্টোরি পরিবর্তনও অন্তর্ভুক্ত।
এপিআইটি কোনো জাভাস্ক্রিপ্ট ফ্রেমওয়ার্ককে সফট নেভিগেশন "এমিট" করার অনুমতি না দিয়ে বা নেভিগেশন এপিআই-এর উপর ভিত্তি করে তৈরি না হয়ে, এই হিউরিস্টিক-ভিত্তিক পদ্ধতি গ্রহণ করে। এর ফলে ফ্রেমওয়ার্ক বা ডেভেলপার কীভাবে এটি ব্যবহার করেন তা নির্বিশেষে, সফট নেভিগেশন বলতে কী বোঝায় সে সম্পর্কে একটি সামঞ্জস্যপূর্ণ ধারণা তৈরি হয়।
ফ্রেমওয়ার্ক বা ডেভেলপাররা ব্যবহারকারীর কোনো ইন্টারঅ্যাকশন বা DOM আপডেট ছাড়াই সফট নেভিগেশনের জন্য URL আপডেট করতে পারে, যেটিকে আমরা ব্যবহারকারীর কাছে একটি নেভিগেশন হিসেবে বিবেচনা করি। তারা বিভিন্ন সময়েও URL আপডেট করতে পারে—ইন্টারঅ্যাকশনের শুরুতে, অথবা এটি সম্পূর্ণ হওয়ার পর শেষে—কিংবা এর মধ্যবর্তী যেকোনো অবস্থায়।
ফ্রেমওয়ার্কের পছন্দের উপর নির্ভর করার পরিবর্তে, ব্রাউজারের মধ্যেই সফট নেভিগেশন শনাক্তকরণ ব্যবস্থাটি তৈরি করা হলে তা কিছু প্রামাণ্য 'হিউরিস্টিকস' প্রতিষ্ঠা করে (এই অরিজিন ট্রায়াল থেকে প্রাপ্ত আপনার মতামতের ভিত্তিতে), যা আমাদেরকে বৃহৎ পরিসরে সফট নেভিগেশনের জন্য কোর ওয়েব ভাইটালস পরিমাপ করতে এবং সেই পরিমাপগুলোকে তুলনীয় করে তুলতে সাহায্য করবে।
ফ্রেমওয়ার্ক এবং ডেভেলপাররা সফট নেভিগেশন এপিআই হিউরিস্টিকস উপেক্ষা করে তাদের ইচ্ছামতো অতিরিক্ত পারফরম্যান্স মেট্রিক পরিমাপ করার জন্য অন্তর্নিহিত ইভেন্ট টাইমিং, লেআউট ইনস্টেবিলিটি এবং ইন্টারেকশন টু কনটেন্টফুল পেইন্ট এপিআই ব্যবহার করতে পারেন, কিন্তু আমরা বিভিন্ন সাইট জুড়ে পরিমাপের সুযোগ দেওয়ার জন্য হিউরিস্টিক ব্যবহার করে কোর ওয়েব ভাইটালস ব্যবহারের সুপারিশ করি।
সফট নেভিগেশন এপিআই পরীক্ষা করতে সাহায্য প্রয়োজন।
সফট নেভিগেশন এপিআই (Soft Navigations API) পরীক্ষা করতে আমাদের সাহায্য প্রয়োজন, যাতে যাচাই করা যায় যে হিউরিস্টিকটি (heuristic) একটি সফট নেভিগেশন কখন ঘটেছে সে সম্পর্কে আপনার প্রত্যাশার সাথে সঠিকভাবে মেলে কিনা। এমন কি কোনো পরিস্থিতি আছে যেখানে আপনার মতে সফট নেভিগেশন ঘটেছে কিন্তু এপিআই তা রিপোর্ট করে না? এর বিপরীতে, এপিআই কি এমন নেভিগেশনগুলোর পুনরাবৃত্তি করে যেগুলোকে আপনি সফট নেভিগেশন হিসেবে বিবেচনা করেন না?
যেসব ক্ষেত্রে সমস্যা দেখা দেয়, তার মধ্যে রয়েছে হিস্ট্রি যোগ করার পরিবর্তে replaceState ব্যবহার করে কোনো URL আপডেট করা, অথবা ব্যবহারকারীর উদ্যোগ ছাড়া কোনো নেভিগেশন ঘটা (যেমন টাইমআউটে লগআউট করা)। উভয় ক্ষেত্রেই হিউরিস্টিকস না মেলার কারণে এমনটা হয় এবং ক্রোম টিম এগুলো অন্তর্ভুক্ত না করার বিষয়ে স্বচ্ছন্দ। কিন্তু আমরা ওয়েব ডেভেলপারদের কাছ থেকে জানতে চাই যে তারা এতে একমত কিনা। আর আমরা বিশেষভাবে সেইসব পরিস্থিতি সম্পর্কে জানতে চাই, যখন হিউরিস্টিকস পূরণ হয়েছে বলে মনে হলেও এপিআই সফট নেভিগেশনটি শনাক্ত করতে পারে না।
এছাড়াও, আমরা বুঝতে চাই যে এই এপিআই এবং নতুন ‘ইন্টারঅ্যাকশন টু কন্টেন্টফুল পেইন্ট’ প্রিমিটিভটি, এসপিএ-এর জন্য ‘কোর ওয়েব ভাইটালস’ পরিমাপের মূল ব্যবহারিক ক্ষেত্রটি পূরণ করে কি না।
আমরা চাই এপিআইটি যেন যথাসম্ভব কার্যকরী হয় এবং এটি চালু করার আগে ও সাইটগুলো কোনো একটি ইমপ্লিমেন্টেশনের ওপর নির্ভর করা শুরু করার আগেই তা করা অনেক সহজ। তাই, আমরা এসপিএ ডেভেলপারদের এবং যারা এই সাইটগুলোর ওয়েব পারফরম্যান্স পরিমাপ করতে আগ্রহী, তাদের এই এপিআইটি একবার ব্যবহার করে দেখতে এবং এটি আপনাদের জন্য কেমন কাজ করছে তা আমাদের জানাতে অনুরোধ করছি।
কিভাবে পরীক্ষা করতে
ক্রোম ফ্ল্যাগ অথবা কমান্ড লাইন অপশন ব্যবহার করে এপিআইটি স্থানীয়ভাবে পরীক্ষা করা যায়। এছাড়াও, অরিজিন ট্রায়ালের মাধ্যমে এটি ফিল্ডেও পরীক্ষা করা যেতে পারে।
এপিআই-এর আরও প্রযুক্তিগত বিবরণ, এবং বিশেষ করে কোর ওয়েব ভাইটালস কীভাবে পরিমাপ করতে হয় , তা জানতে আমাদের ডকুমেন্টেশন বা গিটহাব রিপোজিটরি দেখুন। এছাড়াও, ওয়েব-ভাইটালস লাইব্রেরির একটি পরীক্ষামূলক সফট নেভিগেশন সংস্করণ উপলব্ধ আছে।
প্রতিক্রিয়া
আমরা নিম্নলিখিত স্থানগুলিতে এই পরীক্ষাটির বিষয়ে সক্রিয়ভাবে মতামত জানতে চাইছি:
- এপিআই (API) সম্পর্কিত মতামত গিটহাবে (GitHub) ইস্যু হিসেবে উত্থাপন করা উচিত।
- ক্রোমিয়াম বাস্তবায়নের ত্রুটিগুলো ক্রোমের ইস্যু ট্র্যাকারে উত্থাপন করা উচিত, যদি এটি এখনও জ্ঞাত সমস্যাগুলোর মধ্যে একটি না হয়ে থাকে।
- ওয়েব ভাইটালস সম্পর্কিত সাধারণ মতামত web-vitals-feedback@googlegroups.com ঠিকানায় জানানো যাবে।
সন্দেহ থাকলে খুব বেশি চিন্তা করবেন না, আমরা উভয় জায়গা থেকেই মতামত শুনতে আগ্রহী এবং আনন্দের সাথে উভয় স্থানেই সমস্যাগুলো বাছাই করে সঠিক জায়গায় পাঠিয়ে দেব।