নোস্টেট প্রিফেচ প্রবর্তন করা হচ্ছে

কেটি হেমপেনিয়াস
Katie Hempenius

ভূমিকা

নোস্টেট প্রিফেচ হল Chrome-এর একটি নতুন প্রক্রিয়া যা অপ্রচলিত প্রিরেন্ডারিং প্রক্রিয়ার বিকল্প, <link rel="prerender"> এর মতো বৈশিষ্ট্যগুলিকে পাওয়ার জন্য ব্যবহৃত হয়। প্রি-রেন্ডারিংয়ের মতো, এটি আগে থেকেই সম্পদ আনে; কিন্তু প্রি-রেন্ডারিংয়ের বিপরীতে এটি জাভাস্ক্রিপ্ট চালায় না বা পৃষ্ঠার কোনো অংশ আগে থেকে রেন্ডার করে না। NoState Prefetch-এর লক্ষ্য হল প্রিরেন্ডারিংয়ের চেয়ে কম মেমরি ব্যবহার করা, যদিও এখনও পৃষ্ঠা লোডের সময় কমানো।

NoState প্রিফেচ একটি API নয় বরং বিভিন্ন API এবং বৈশিষ্ট্যগুলি বাস্তবায়নের জন্য Chrome দ্বারা ব্যবহৃত একটি প্রক্রিয়া৷ রিসোর্স হিন্টস এপিআই , সেইসাথে Chrome অ্যাড্রেস বার দ্বারা পৃষ্ঠাগুলির প্রিফেচিং, উভয়ই NoState প্রিফেচ ব্যবহার করে প্রয়োগ করা হয়। আপনি যদি Chrome 63 বা তার পরবর্তী সংস্করণ ব্যবহার করেন, তাহলে আপনার ব্রাউজার ইতিমধ্যেই <link rel="prerender"> এর মতো বৈশিষ্ট্যগুলির জন্য NoState প্রিফেচ ব্যবহার করছে।

এই নিবন্ধটি ব্যাখ্যা করে যে কীভাবে NoStatePrefetch কাজ করে, এটি প্রবর্তনের প্রেরণা এবং এর ব্যবহার সম্পর্কে পরিসংখ্যান দেখতে Chrome এর হিস্টোগ্রাম ব্যবহার করার নির্দেশাবলী।

প্রেরণা

NoState Prefetch প্রবর্তনের জন্য দুটি প্রাথমিক প্রেরণা ছিল:

মেমরির ব্যবহার কমিয়ে দিন

NoState প্রিফেচ শুধুমাত্র ~45MiB মেমরি ব্যবহার করে। প্রিলোড স্ক্যানার রক্ষণাবেক্ষণ করা হচ্ছে NoState প্রিফেচের জন্য প্রাথমিক মেমরি খরচ এবং এই খরচ বিভিন্ন ব্যবহারের ক্ষেত্রে তুলনামূলকভাবে স্থির থাকে। আনার আকার বা ভলিউম বৃদ্ধি NoState প্রিফেচ দ্বারা ব্যবহৃত মেমরির পরিমাণের উপর উল্লেখযোগ্য প্রভাব ফেলে না।

বিপরীতে, প্রি-রেন্ডারিং সাধারণত 100MiB মেমরি খরচ করে এবং মেমরি খরচ 150MiB এ সীমাবদ্ধ থাকে। এই উচ্চ মেমরি খরচ এটিকে লো-এন্ড (অর্থাৎ <= 512MB RAM) ডিভাইসের জন্য অনুপযুক্ত করে তোলে। ফলস্বরূপ, ক্রোম লো-এন্ড ডিভাইসে প্রিরেন্ডারিং করে না এবং পরিবর্তে প্রি-কানেক্ট হবে।

নতুন ওয়েব প্ল্যাটফর্ম বৈশিষ্ট্য সমর্থন সহজতর

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

বাস্তবায়ন

নিম্নলিখিত ধাপগুলি ব্যাখ্যা করে কিভাবে NoState Prefetch কাজ করে।

  1. NoStatePrefetch ট্রিগার করা হয়েছে।

    একটি প্রি-রেন্ডার রিসোর্স ইঙ্গিত (যেমন <link rel="prerender"> ) এবং কিছু ক্রোম বৈশিষ্ট্য NoState প্রিফেচকে ট্রিগার করবে যদি নিম্নলিখিত দুটি শর্ত পূরণ করা হয়: ক) ব্যবহারকারী একটি লো-এন্ড ডিভাইসে নেই, এবং খ) ব্যবহারকারী সেলুলার নেটওয়ার্কে নেই।

  2. NoState প্রিফেচের জন্য একটি নতুন, ডেডিকেটেড রেন্ডারার তৈরি করা হয়েছে৷

    ক্রোমে, একটি " রেন্ডারার " হল একটি প্রক্রিয়া যা একটি HTML ডকুমেন্ট নেওয়া, এটিকে পার্স করা, এর রেন্ডার ট্রি তৈরি করা এবং ফলাফলটি স্ক্রিনে আঁকার জন্য দায়ী৷ ক্রোমের প্রতিটি ট্যাব, সেইসাথে প্রতিটি NoState প্রিফেচ প্রক্রিয়া, বিচ্ছিন্নতা প্রদানের জন্য নিজস্ব রেন্ডারার রয়েছে৷ এটি কিছু ভুল হওয়ার প্রভাব কমিয়ে আনতে সাহায্য করে (যেমন, একটি ট্যাব ক্র্যাশ হওয়া) সেইসাথে দূষিত কোডটিকে অন্যান্য ট্যাব বা সিস্টেমের অন্যান্য অংশগুলিতে অ্যাক্সেস করা থেকে প্রতিরোধ করে৷

  3. NoState প্রিফেচের সাথে লোড করা সংস্থানটি আনা হয়েছে৷ HTMLPreloadScanner তারপর এই রিসোর্স স্ক্যান করে যেকোন সাবরিসোর্স আবিষ্কার করতে যা আনতে হবে। যদি মূল সংস্থান বা এর কোনো সাবরিসোর্সে একজন নিবন্ধিত পরিষেবা কর্মী থাকে, তাহলে এই অনুরোধগুলি উপযুক্ত পরিষেবা কর্মীর মাধ্যমে যাবে৷

    NoState প্রিফেচ শুধুমাত্র GET HTTP পদ্ধতি সমর্থন করে; এটি এমন কোনো সাবরিসোর্স আনবে না যার জন্য অন্যান্য HTTP পদ্ধতি ব্যবহার করা প্রয়োজন। অতিরিক্তভাবে, এটি এমন কোনও সংস্থান আনবে না যার জন্য ব্যবহারকারীর ক্রিয়াকলাপ প্রয়োজন (যেমন, প্রমাণীকরণ পপআপ, SSL ক্লায়েন্ট শংসাপত্র, বা ম্যানুয়াল ওভাররাইড)।

  4. যে সাবরিসোর্সগুলি আনা হয় সেগুলি একটি "আইডিএল" নেট অগ্রাধিকার সহ আনা হবে৷

    "আইডিএল" নেট অগ্রাধিকার হল ক্রোমের সর্বনিম্ন সম্ভাব্য নেট অগ্রাধিকার৷

  5. NoState Prefetch দ্বারা পুনরুদ্ধার করা সমস্ত সংস্থান তাদের ক্যাশে শিরোনাম অনুযায়ী ক্যাশে করা হয়।

    NoState প্রিফেচ no-store ক্যাশে-কন্ট্রোল হেডার ছাড়া সমস্ত সংস্থান ক্যাশে করবে। Vary রেসপন্স হেডার, no-cache ক্যাশে-কন্ট্রোল হেডার থাকলে বা রিসোর্সটি 5 মিনিটের বেশি পুরানো হলে ব্যবহারের আগে রিসোর্সটিকে পুনরায় যাচাই করা হবে।

  6. সমস্ত উপ-সম্পদ লোড হওয়ার পরে রেন্ডারারকে হত্যা করা হয়।

    সাবরিসোর্স টাইম আউট হলে, রেন্ডারার 30 সেকেন্ড পরে মেরে ফেলা হবে।

  7. ব্রাউজার কুকি স্টোর এবং স্থানীয় DNS ক্যাশে আপডেট করার পাশাপাশি কোনো রাষ্ট্রীয় পরিবর্তন করে না। এটিকে কল করা গুরুত্বপূর্ণ কারণ এটি "NoState প্রিফেচ"-এ "NoState"।

    "স্বাভাবিক" পৃষ্ঠা লোড প্রক্রিয়ার এই মুহুর্তে, ব্রাউজার সম্ভবত এমন কিছু করবে যা ব্রাউজারের অবস্থা পরিবর্তন করবে: উদাহরণস্বরূপ, জাভাস্ক্রিপ্ট চালানো, sessionStorage বা localStorage পরিবর্তন করা, সঙ্গীত বা ভিডিও চালানো, ইতিহাস API ব্যবহার করা, বা ব্যবহারকারীকে অনুরোধ করা . NoState Prefetch-এ শুধুমাত্র রাষ্ট্রীয় পরিবর্তনগুলি হল DNS ক্যাশে আপডেট করা যখন প্রতিক্রিয়া আসে এবং কুকি স্টোর আপডেট করা হয় যদি কোনো প্রতিক্রিয়াতে Set-Cookie হেডার থাকে।

  8. যখন সম্পদের প্রয়োজন হয়, এটি ব্রাউজার উইন্ডোতে লোড হয়।

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

    যদি পৃষ্ঠাটিতে কোনও পরিষেবা কর্মী থাকে তবে এই পৃষ্ঠার লোডটি আবার পরিষেবা কর্মীর মাধ্যমে যাবে৷

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

ওয়েব অ্যানালিটিক্সের উপর প্রভাব

নোস্টেট প্রিফেচ ব্যবহার করে লোড করা পৃষ্ঠাগুলি ওয়েব অ্যানালিটিক্স টুল দ্বারা সামান্য ভিন্ন সময়ে নিবন্ধিত হয় যা টুলটি ক্লায়েন্ট-সাইড বা সার্ভার-সাইডে ডেটা সংগ্রহ করে কিনা তার উপর নির্ভর করে।

ক্লায়েন্ট-সাইড অ্যানালিটিক্স স্ক্রিপ্টগুলি একটি পৃষ্ঠাভিউ নিবন্ধন করে যখন পৃষ্ঠাটি ব্যবহারকারীকে দেখানো হয়। এই স্ক্রিপ্টগুলি জাভাস্ক্রিপ্ট চালানোর উপর নির্ভর করে এবং NoState প্রিফেচ কোন জাভাস্ক্রিপ্ট চালায় না।

সার্ভার-সাইড বিশ্লেষণ সরঞ্জাম মেট্রিক্স নিবন্ধন যখন একটি অনুরোধ পরিচালনা করা হয়. NoState Prefetch এর মাধ্যমে লোড করা সম্পদগুলির জন্য, যখন একটি অনুরোধ পরিচালনা করা হয় এবং যখন ক্লায়েন্টের দ্বারা প্রতিক্রিয়াটি আসলে ব্যবহার করা হয় (যদি এটি ব্যবহার করা হয়) এর মধ্যে একটি উল্লেখযোগ্য ব্যবধান থাকতে পারে। Chrome 69 থেকে, NoState প্রিফেচ হেডার যুক্ত করে Purpose: Prefetch

এটা দেখ

NoStatePrefetch ক্রোম 63-এ ডিসেম্বর 2017 এ পাঠানো হয়েছে। এটি বর্তমানে ব্যবহৃত হয়:

  • prerender রিসোর্স ইঙ্গিত প্রয়োগ করুন
  • Google অনুসন্ধান ফলাফলে প্রথম ফলাফল আনুন
  • ক্রোম অ্যাড্রেস বার ভবিষ্যদ্বাণী করে যে পৃষ্ঠাগুলি পরবর্তীতে পরিদর্শন করা হতে পারে

আপনি কীভাবে NoStatePrefetch ব্যবহার করছেন তা দেখতে আপনি Chrome অভ্যন্তরীণ ব্যবহার করতে পারেন৷

NoState প্রিফেচ দিয়ে লোড করা সাইটগুলির তালিকা দেখতে, chrome://net-internals/#prerender এ যান।

আপনার NoState প্রিফেচ ব্যবহারের পরিসংখ্যান দেখতে, chrome://histograms- এ যান এবং "NoStatePrefetch" অনুসন্ধান করুন৷ তিনটি ভিন্ন NoState প্রিফেচ হিস্টোগ্রাম রয়েছে - NoState প্রিফেচের প্রতিটি ব্যবহারের ক্ষেত্রে একটি:

  • "NoStatePrefetch" (প্রি-রেন্ডার রিসোর্স ইঙ্গিত দ্বারা ব্যবহারের পরিসংখ্যান)
  • "gws_NoStatePrefetch" (গুগল সার্চ ফলাফল পৃষ্ঠার ব্যবহারের পরিসংখ্যান)
  • "omnibox_NoStatePrefetch" (Chrome ঠিকানা বার দ্বারা ব্যবহারের পরিসংখ্যান)