আনলোড ইভেন্ট অবজ্ঞা করা হচ্ছে

unload ইভেন্টটি ধীরে ধীরে ডিফল্ট পরিবর্তন করে ক্রমশ অবমূল্যায়ন করা হবে যাতে unload হ্যান্ডলাররা পৃষ্ঠাগুলিতে ফায়ার করা বন্ধ করে যদি না একটি পৃষ্ঠা স্পষ্টভাবে তাদের পুনরায় সক্ষম করার জন্য নির্বাচন করে।

অবচয় টাইমলাইন

আমরা উল্লেখ করেছি যে আনলোড আচরণ সম্ভবত জানুয়ারী 2019 এর প্রথম দিকে পরিবর্তনের সাপেক্ষে হবে, যখন আমরা একটি ব্যাক/ফরোয়ার্ড ক্যাশে বাস্তবায়নের আমাদের অভিপ্রায় ঘোষণা করেছি। বাস্তবায়ন কাজের সমান্তরালে, আমরা একটি বৃহৎ আউটরিচ পরিচালনা করেছি যার ফলস্বরূপ আনলোড ব্যবহার উল্লেখযোগ্যভাবে হ্রাস পেয়েছে। এই আউটরিচের পরিপূরক করার জন্য, আমরা Chrome 115 থেকে আনলোড অবমূল্যায়ন করার প্রভাব পরীক্ষা করার উপায়গুলিও অফার করতে শুরু করেছি:

এই আউটরিচ এবং ট্রায়াল পর্যায়গুলি অনুসরণ করে, আমরা কীভাবে নরম অবচয় ঘটবে বলে আশা করি:

  • একটি ব্যাপ্ত পর্যায় যেখানে আনলোড ধীরে ধীরে শীর্ষ 50টি জনপ্রিয় সাইটের জন্য কাজ করা বন্ধ করে দেবে (লেখার সময় হিসাবে উল্লেখ )।
    • Chrome 120 (নভেম্বর 2023 এর শেষ) থেকে 1% ব্যবহারকারীর সাথে শুরু হচ্ছে।
    • Q3 2024-এর শেষ নাগাদ 100% ব্যবহারকারীর সাথে শেষ হচ্ছে
  • উপরন্তু, Q3 2024 থেকে, আমরা একটি সাধারণ পর্যায় শুরু করতে চাই যেখানে আনলোড ধীরে ধীরে যেকোনো সাইটে কাজ করা বন্ধ করে দেবে, 1% ব্যবহারকারী দিয়ে শুরু হবে এবং Q1 2025-এর শেষে 100% ব্যবহারকারীর সাথে শেষ হবে।

মনে রাখবেন যে এই নরম অবচয় টাইমলাইন আনলোড থেকে দূরে স্থানান্তর করার জন্য পর্যাপ্ত সময় প্রদান না করলে আমরা অপ্ট-আউট বিকল্পগুলির একটি মেনুও অফার করি৷ আমাদের লক্ষ্য হল শেষ পর্যায়ের ( আনলোডের হার্ড অবচয় ) টাইমলাইন জানাতে এই নরম অবচয় ব্যবহার করা যেখানে এই অপ্ট-আউটগুলি সরানো বা হ্রাস করা হবে৷

আনলোড অবচয়নের টাইমলাইন।

পটভূমি

যখন নথিটি আনলোড করা হচ্ছে তখন unload ফায়ার করার জন্য ডিজাইন করা হয়েছিল। তাত্ত্বিকভাবে, এটি কোড চালানোর জন্য ব্যবহার করা যেতে পারে যে কোনো সময় একজন ব্যবহারকারী একটি পৃষ্ঠা থেকে দূরে নেভিগেট করছে, অথবা সেশন কলব্যাকের শেষ হিসাবে।

এই ঘটনাটি সবচেয়ে বেশি ব্যবহৃত হয় এমন পরিস্থিতিতে রয়েছে:

  • ব্যবহারকারীর ডেটা সংরক্ষণ করা : পৃষ্ঠা ছেড়ে যাওয়ার আগে ডেটা সংরক্ষণ করুন।
  • পরিচ্ছন্নতার কাজগুলি সম্পাদন করা : পৃষ্ঠাটি পরিত্যাগ করার আগে খোলা সংস্থানগুলি বন্ধ করা৷
  • বিশ্লেষণ পাঠানো : সেশনের শেষে ব্যবহারকারীর মিথস্ক্রিয়া সম্পর্কিত ডেটা পাঠানো।

তবে unload ইভেন্টটি অত্যন্ত অবিশ্বস্ত

ডেস্কটপ ক্রোম এবং ফায়ারফক্সে, unload যুক্তিসঙ্গতভাবে নির্ভরযোগ্য কিন্তু এটি bfcache (ব্যাক/ফরওয়ার্ড ক্যাশে) ব্যবহার রোধ করে একটি সাইটের কর্মক্ষমতার উপর নেতিবাচক প্রভাব ফেলে।

মোবাইল ব্রাউজারে unload প্রায়শই চালানো হয় না কারণ ট্যাবগুলি ঘন ঘন ব্যাকগ্রাউন্ড করা হয় এবং তারপরে মেরে ফেলা হয়। এই কারণে ব্রাউজারগুলি unload চেয়ে মোবাইলে bfcache কে অগ্রাধিকার দিতে বেছে নেয়, যা তাদের আরও বেশি অবিশ্বস্ত করে তোলে। সাফারি ডেস্কটপেও এই আচরণ ব্যবহার করে।

ক্রোম টিম বিশ্বাস করে যে ডেস্কটপে unload চেয়ে bfcache কে অগ্রাধিকার দেওয়ার মোবাইল মডেল ব্যবহার করাটা সেখানেও এটিকে আরও অবিশ্বস্ত করে বিঘ্নিত করবে , যখন এটি আগে Chrome (এবং Firefox) এ যুক্তিসঙ্গতভাবে নির্ভরযোগ্য ছিল। পরিবর্তে, ক্রোমের লক্ষ্য হল unload ইভেন্টটিকে সম্পূর্ণরূপে অপসারণ করা। ততক্ষণ পর্যন্ত এটি ডেস্কটপে নির্ভরযোগ্য থাকবে যারা স্পষ্টভাবে অবচয় থেকে অপ্ট-আউট করেছেন।

কেন unload ইভেন্ট অবমূল্যায়ন?

আমরা এখন যে ওয়েবে বাস করি তার অনেক বড় স্বীকৃতির ক্ষেত্রে unload অবমূল্যায়ন করা একটি মূল পদক্ষেপ। unload ইভেন্ট অ্যাপের জীবনচক্র নিয়ন্ত্রণের একটি মিথ্যা ধারণা দেয় যা আধুনিক কম্পিউটিং বিশ্বে আমরা কীভাবে ওয়েব ব্রাউজ করি তা ক্রমবর্ধমানভাবে অসত্য।

মোবাইল অপারেটিং সিস্টেমগুলি প্রায়শই মেমরি সংরক্ষণের জন্য ওয়েব পৃষ্ঠাগুলিকে হিমায়িত বা আনলোড করে এবং ডেস্কটপ ব্রাউজারগুলিও একই কারণে এটি আরও বেশি করে করছে। এমনকি অপারেটিং সিস্টেমের হস্তক্ষেপ ছাড়াই, ব্যবহারকারীরা নিজেরাই প্রায়শই ট্যাব সুইচ করে এবং পুরানো ট্যাবগুলিকে আনুষ্ঠানিকভাবে "পৃষ্ঠা ছেড়ে না দিয়ে" মেরে ফেলে।

অপ্রচলিত হিসাবে unload ইভেন্টটি সরানো হল একটি স্বীকৃতি যে ওয়েব বিকাশকারী হিসাবে আমাদের দৃষ্টান্তটি বাস্তব বিশ্বের সাথে মেলে তা নিশ্চিত করতে হবে এবং সেকেলে ধারণাগুলির উপর নির্ভর করে না যা আর সত্য হয় না - যদি তারা কখনও করে থাকে।

ইভেন্ট unload বিকল্প

unload পরিবর্তে এটি ব্যবহার করার পরামর্শ দেওয়া হয়:

  • visibilitychange : কখন একটি পৃষ্ঠার দৃশ্যমানতা পরিবর্তিত হয় তা নির্ধারণ করতে। এই ঘটনাটি ঘটে যখন ব্যবহারকারী ট্যাব স্যুইচ করে, ব্রাউজার উইন্ডো ছোট করে, বা একটি নতুন পৃষ্ঠা খোলে। hidden অবস্থা বিবেচনা করুন অ্যাপ এবং ব্যবহারকারীর ডেটা সংরক্ষণ করার জন্য শেষ নির্ভরযোগ্য সময়।
  • pagehide : ব্যবহারকারী কখন পৃষ্ঠা থেকে নেভিগেট করেছে তা নির্ধারণ করতে। এই ইভেন্টটি ঘটে যখন ব্যবহারকারী পৃষ্ঠা থেকে দূরে যান, পৃষ্ঠাটি পুনরায় লোড করেন বা ব্রাউজার উইন্ডো বন্ধ করেন। pagehide ইভেন্টটি ফায়ার করা হয় না যখন পৃষ্ঠাটি কেবল ছোট করা হয় বা অন্য ট্যাবে স্যুইচ করা হয়। মনে রাখবেন, যেহেতু pagehide কোনো পৃষ্ঠাকে ব্যাক/ফরওয়ার্ড ক্যাশের জন্য অযোগ্য করে তোলে না, তাই এই ইভেন্টটি ফায়ার হওয়ার পরে একটি পৃষ্ঠা পুনরুদ্ধার করা সম্ভব। আপনি যদি এই ইভেন্টে কোনও সংস্থান পরিষ্কার করেন, তাহলে সেগুলিকে পৃষ্ঠা পুনরুদ্ধারে পুনরুদ্ধার করতে হতে পারে৷

beforeunload ইভেন্টটি unload জন্য একটি সামান্য ভিন্ন ব্যবহারের ক্ষেত্রে রয়েছে যে এটি একটি বাতিলযোগ্য ইভেন্ট। দূরে নেভিগেট করার সময় এটি প্রায়শই ব্যবহারকারীদের অসংরক্ষিত পরিবর্তন সম্পর্কে সতর্ক করতে ব্যবহৃত হয়। এই ইভেন্টটিও অবাস্তব কারণ একটি ব্যাকগ্রাউন্ড ট্যাব মারা গেলে এটি ফায়ার করবে না। beforeunload ব্যবহার সীমিত করার পরামর্শ দেওয়া হয় এবং শুধুমাত্র শর্তসাপেক্ষে যোগ করুন । পরিবর্তে, বেশিরভাগ unload প্রতিস্থাপনের জন্য উপরের ইভেন্টগুলি ব্যবহার করুন।

আরও বিশদ বিবরণের জন্য, unload হ্যান্ডলার ব্যবহার না করার বিষয়ে এই পরামর্শটি দেখুন।

unload ব্যবহার সনাক্ত করুন

পৃষ্ঠাগুলিতে unload ইভেন্টের উপস্থিতি খুঁজে পেতে আপনাকে সাহায্য করার জন্য বিভিন্ন সরঞ্জাম রয়েছে৷ এটি সাইটগুলিকে আবিষ্কার করতে দেয় যে তারা এই ইভেন্টটি ব্যবহার করছে কিনা-হয় তাদের নিজস্ব কোডে, বা লাইব্রেরির মাধ্যমে-এবং তাই আসন্ন অবচয় দ্বারা প্রভাবিত হতে পারে।

বাতিঘর

লাইটহাউসের একটি no-unload-listeners অডিট রয়েছে, যা ডেভেলপারদের সতর্ক করে যদি তাদের পৃষ্ঠাগুলিতে (তৃতীয়-পক্ষের লাইব্রেরিগুলি সহ) কোনো জাভাস্ক্রিপ্ট unload ইভেন্ট লিসেনার যোগ করে।

লাইটহাউস অডিট ব্যবহারে আনলোড হ্যান্ডলার দেখাচ্ছে৷

Chrome DevTools

আনলোড হ্যান্ডলারের ব্যবহার সহ আপনার পৃষ্ঠাটিকে ব্যাক/ unload ক্যাশের জন্য যোগ্য হতে বাধা দিতে পারে এমন সমস্যাগুলি সনাক্ত করতে আপনাকে সাহায্য করার জন্য Chrome DevTools একটি back-foward-cache অডিট অন্তর্ভুক্ত করে।

ব্যাক/ফরওয়ার্ড ক্যাশে পরীক্ষা করতে, এই পদক্ষেপগুলি অনুসরণ করুন:

  1. আপনার পৃষ্ঠায়, DevTools খুলুন , তারপরে অ্যাপ্লিকেশন > ব্যাকগ্রাউন্ড পরিষেবা > ব্যাক/ফরওয়ার্ড ক্যাশে নেভিগেট করুন।

  2. ক্রোম স্বয়ংক্রিয়ভাবে আপনাকে chrome://terms/ এবং আপনার পৃষ্ঠায় ফিরে নিয়ে যায়। বিকল্পভাবে, আপনি ব্রাউজারের পিছনে এবং এগিয়ে বোতামে ক্লিক করতে পারেন।

যদি আপনার পৃষ্ঠা ব্যাক/ফরোয়ার্ড ক্যাশে করার জন্য যোগ্য না হয়, তাহলে ব্যাক/ফরোয়ার্ড ক্যাশে ট্যাব আপনাকে সমস্যার একটি তালিকা দেখায়। অ্যাকশনেবলের অধীনে, আপনি unload ব্যবহার করছেন কিনা তা দেখতে পারেন:

Chrome DevTools ব্যাক/ফরোয়ার্ড ক্যাশে টেস্টিং টুল একটি আনলোড হ্যান্ডলার ব্যবহার করা হয়েছে

রিপোর্টিং API

রিপোর্টিং এপিআই আপনার ওয়েবসাইট ব্যবহারকারীদের থেকে unload ব্যবহার শনাক্ত করার জন্য শুধুমাত্র-পঠন অনুমতি নীতির সাথে ব্যবহার করা যেতে পারে।

আরও বিশদ বিবরণের জন্য আনলোডগুলি খুঁজে পেতে রিপোর্টিং API ব্যবহার করা দেখুন৷

Bfcache notRestoredReasons API

notRestoredReasons প্রপার্টিPerformanceNavigationTiming ক্লাসে যোগ করা — ন্যাভিগেশনে bfcache ব্যবহার করা থেকে নথিগুলি ব্লক করা হয়েছে কিনা এবং কেন সে সম্পর্কিত তথ্য রিপোর্ট করে৷ ব্যবহারের নির্দেশাবলী এখানে পাওয়া যাবে। এটি একটি বিদ্যমান unload শ্রোতার প্রতিক্রিয়া অবজেক্ট সতর্কতা কেমন দেখায় তার একটি উদাহরণ:

{
   children: [],
   id: null,
   name: null,
   reasons: [
     {"reason", "unload-handler"}
   ],
   src: null,
   url: "https://www.example.com/page/"
}

unload অ্যাক্সেস নিয়ন্ত্রণ

Chrome ক্রমান্বয়ে unload ইভেন্টটিকে অবমূল্যায়ন করবে। ইতিমধ্যে, আপনি এই আচরণ নিয়ন্ত্রণ করতে এবং আসন্ন অবচয়নের জন্য প্রস্তুত করতে বিভিন্ন সরঞ্জাম ব্যবহার করতে পারেন। মনে রাখবেন যে আপনার দীর্ঘমেয়াদে এই কৌশলগুলির উপর নির্ভর করা উচিত নয় এবং যত তাড়াতাড়ি সম্ভব বিকল্পগুলিতে স্থানান্তরিত করার পরিকল্পনা করা উচিত।

নিম্নলিখিত বিকল্পগুলি আপনাকে unload হ্যান্ডলারগুলিকে সক্ষম বা অক্ষম করার অনুমতি দেয় যাতে আপনার সাইটটি তাদের ছাড়া কীভাবে কাজ করবে তা পরীক্ষা করতে যাতে আপনি আসন্ন অবচয়নের জন্য প্রস্তুত করতে পারেন৷ বিভিন্ন ধরনের নীতি আছে:

  • অনুমতি নীতি : এটি একটি প্ল্যাটফর্ম API যা সাইটের মালিকদের জন্য HTTP শিরোনামগুলির ব্যবহারের মাধ্যমে একটি সাইট বা একটি পৃথক পৃষ্ঠা স্তরে বৈশিষ্ট্যগুলিতে অ্যাক্সেস নিয়ন্ত্রণ করতে পারে৷
  • এন্টারপ্রাইজ নীতি : আইটি প্রশাসকদের জন্য তাদের প্রতিষ্ঠান বা ব্যবসার জন্য Chrome কনফিগার করার জন্য টুল। এগুলি একটি অ্যাডমিন প্যানেলের মাধ্যমে কনফিগার করা যেতে পারে, যেমন Google অ্যাডমিন কনসোল
  • ক্রোম ফ্ল্যাগস : এটি একটি পৃথক বিকাশকারীকে বিভিন্ন সাইটে প্রভাব পরীক্ষা করার জন্য unload অবচয় সেটিং পরিবর্তন করতে দেয়৷

অনুমতি নীতি

Chrome 115 থেকে একটি অনুমতি নীতি যোগ করা হয়েছে যাতে সাইটগুলিকে unload হ্যান্ডলার ব্যবহার করা থেকে অপ্ট-আউট করতে এবং সাইটের কার্যক্ষমতা উন্নত করতে bfcache থেকে অবিলম্বে উপকৃত হতে পারে৷ আপনার সাইটের জন্য এটি কীভাবে সেট করবেন তার এই উদাহরণগুলি দেখুন। এটি সাইটগুলিকে unload অবচয় থেকে এগিয়ে যাওয়ার অনুমতি দেয়৷

এটিকে ক্রোম 117-এ প্রসারিত করা হবে সাইটগুলিকে বিপরীত কাজ করার অনুমতি দিতে এবং unload হ্যান্ডলারগুলিকে ফায়ার করার চেষ্টা চালিয়ে যাওয়ার জন্য অপ্ট-ইন করার জন্য, কারণ ক্রোম ভবিষ্যতে এগুলিকে ফায়ার না করার জন্য ডিফল্ট পরিবর্তন করে৷ আপনার সাইটের জন্য আনলোড হ্যান্ডলারদের ফায়ার করার অনুমতি দেওয়া চালিয়ে যাওয়ার জন্য এই উদাহরণগুলি দেখুন৷ এই অপ্ট-ইনটি চিরতরে থাকবে না এবং সাইটগুলিকে unload হ্যান্ডলার থেকে দূরে স্থানান্তরিত করার জন্য সময় দেওয়ার জন্য ব্যবহার করা উচিত৷

এন্টারপ্রাইজ নীতি

যে এন্টারপ্রাইজগুলির সফ্টওয়্যার রয়েছে যা সঠিকভাবে কাজ করার জন্য unload ইভেন্টের উপর নির্ভর করে তারা তাদের নিয়ন্ত্রণাধীন ডিভাইসগুলির জন্য ধীরে ধীরে অবক্ষয় রোধ করতে ForcePermissionPolicyUnloadDefaultEnabled নীতি ব্যবহার করতে পারে৷ এই নীতিটি সক্ষম করার মাধ্যমে, unload সমস্ত উত্সের জন্য সক্রিয় থেকে ডিফল্ট হিসাবে অবিরত থাকবে৷ একটি পৃষ্ঠা যদি এটি চায় তবে এখনও একটি কঠোর নীতি সেট করতে পারে৷ পারমিশন পলিসি অপ্ট-আউটের মতো, এটি সম্ভাব্য ব্রেকিং পরিবর্তনগুলি প্রশমিত করার একটি টুল, কিন্তু এটি অনির্দিষ্টকালের জন্য ব্যবহার করা উচিত নয়।

ক্রোম পতাকা এবং কমান্ড লাইন সুইচ

এন্টারপ্রাইজ নীতির পাশাপাশি, আপনি Chrome পতাকা এবং কমান্ড লাইন সুইচের মাধ্যমে পৃথক ব্যবহারকারীদের জন্য অবচয় অক্ষম করতে পারেন:

chrome://flags/#deprecate-unload এটিকে enabled অবচয় ডিফল্টকে সামনে আনবে এবং unload হ্যান্ডলারদের ফায়ার করা থেকে আটকাবে৷ অনুমতি নীতির মাধ্যমে সেগুলি এখনও সাইট-বাই-সাইট ভিত্তিতে ওভাররাইড করা যেতে পারে, কিন্তু ডিফল্টরূপে ফায়ার করা অব্যাহত থাকবে।

এই সেটিংস কমান্ড লাইন সুইচ দ্বারা নিয়ন্ত্রণ করা যেতে পারে.

বিকল্প তুলনা

নিম্নলিখিত সারণীটি পূর্বে আলোচনা করা বিকল্পগুলির বিভিন্ন ব্যবহারের সংক্ষিপ্ত বিবরণ দেয়:

অবচয়কে সামনে আনুন অবচয়কে সামনে আনুন (ব্যতিক্রম সহ) স্থানান্তরের জন্য সময় সুরক্ষিত করতে অবচয় রোধ করুন
অনুমতি নীতি
(পৃষ্ঠা/সাইটে প্রযোজ্য)
হ্যাঁ হ্যাঁ হ্যাঁ
এন্টারপ্রাইজ নীতি
(ডিভাইসগুলিতে প্রযোজ্য)
না না হ্যাঁ
ক্রোম পতাকা
(ব্যক্তিগত ব্যবহারকারীদের জন্য প্রযোজ্য)
হ্যাঁ না না
ক্রোম কমান্ড লাইন সুইচ
(ব্যক্তিগত ব্যবহারকারীদের জন্য প্রযোজ্য)
হ্যাঁ না হ্যাঁ

উপসংহার

unload হ্যান্ডলারদের অবমূল্যায়ন করা হচ্ছে। এগুলি দীর্ঘদিন ধরে অবিশ্বস্ত ছিল এবং কোনও নথি নষ্ট হয়ে গেলে এমন সমস্ত ক্ষেত্রে গুলি চালানোর নিশ্চয়তা নেই৷ অতিরিক্তভাবে, unload হ্যান্ডলারগুলি bfcache এর সাথে বেমানান।

যে সাইটগুলি বর্তমানে unload হ্যান্ডলারগুলি ব্যবহার করে তাদের এই আসন্ন অবচয়ের জন্য প্রস্তুত করা উচিত যে কোনও বিদ্যমান unload হ্যান্ডলারের জন্য পরীক্ষা করে, সেগুলিকে সরিয়ে দেওয়া বা স্থানান্তরিত করা বা, শেষ অবলম্বন হিসাবে, আরও সময়ের প্রয়োজন হলে অবচয় বিলম্বিত করা।

স্বীকৃতি

এই নিবন্ধটি পর্যালোচনা করতে সাহায্য করার জন্য কেনজি বাহেক্স, ফার্গাল ডালি, আদ্রিয়ানা জারা এবং জেরেমি ওয়াগনারকে ধন্যবাদ।

আনস্প্ল্যাশে আনজা বাউরম্যানের হিরো ছবি