বছরের পর বছর ধরে, ওয়েব সম্প্রদায় ওয়েব পারফরম্যান্স অপ্টিমাইজেশান জ্ঞানের ভাণ্ডার তৈরি করেছে। যদিও যেকোন একটি অপ্টিমাইজেশন অনেক সাইটের জন্য কর্মক্ষমতা উন্নত করতে পারে, সেগুলি একসাথে অপ্রতিরোধ্য বোধ করতে পারে এবং বাস্তবে, শুধুমাত্র তাদের মধ্যে কিছু যেকোন সাইটে প্রযোজ্য।
ওয়েব পারফরম্যান্স আপনার দিনের কাজ না হলে, আপনার সাইটের জন্য কোন অপ্টিমাইজেশনগুলি সবচেয়ে বেশি প্রভাব ফেলবে তা সম্ভবত স্পষ্ট নয়। আপনার কাছে সম্ভবত সেগুলির জন্য সময় থাকবে না, তাই নিজেকে জিজ্ঞাসা করা গুরুত্বপূর্ণ যে আপনি আপনার ব্যবহারকারীদের জন্য পারফরম্যান্স উন্নত করতে সবচেয়ে প্রভাবশালী অপ্টিমাইজেশানগুলি কী বেছে নিতে পারেন?
পারফরম্যান্স অপ্টিমাইজেশন সম্পর্কে এখানে সত্য: আপনি কেবল তাদের প্রযুক্তিগত যোগ্যতার ভিত্তিতে তাদের বিচার করতে পারবেন না। আপনাকে মানবিক এবং সাংগঠনিক কারণগুলিও বিবেচনা করতে হবে যা প্রভাবিত করে যে আপনি যে কোনও অপ্টিমাইজেশান বাস্তবায়ন করতে সক্ষম হবেন। কিছু কর্মক্ষমতা উন্নতি তাত্ত্বিকভাবে ব্যাপকভাবে প্রভাবশালী হতে পারে, কিন্তু বাস্তবে, কিছু ডেভেলপারের কাছে সেগুলি বাস্তবায়ন করার জন্য সময় বা সংস্থান থাকবে। অন্যদিকে, অত্যন্ত প্রভাবশালী পারফরম্যান্সের সর্বোত্তম অনুশীলন থাকতে পারে যা প্রায় সবাই ইতিমধ্যে অনুসরণ করছে। এই নির্দেশিকাটি ওয়েব পারফরম্যান্স অপ্টিমাইজেশানগুলি চিহ্নিত করে যা:
- সবচেয়ে বড় বাস্তব বিশ্বের প্রভাব আছে
- প্রাসঙ্গিক এবং অধিকাংশ সাইটে প্রযোজ্য
- বেশিরভাগ বিকাশকারীদের বাস্তবায়নের জন্য বাস্তবসম্মত
একসাথে নেওয়া, এইগুলি হল সবচেয়ে বাস্তবসম্মত এবং প্রভাবশালী উপায় যা আপনি আপনার কোর ওয়েব ভাইটাল মেট্রিক্স উন্নত করতে পারেন। আপনি যদি ওয়েব পারফরম্যান্সে নতুন হন—অথবা আপনি যদি এখনও সিদ্ধান্ত নিচ্ছেন যে কী আপনাকে বিনিয়োগে সবচেয়ে বেশি রিটার্ন দেবে—সেটি শুরু করার সেরা জায়গা।
নেক্সট পেইন্টের সাথে মিথস্ক্রিয়া (INP)
নতুন কোর ওয়েব ভাইটাল মেট্রিক হিসাবে, ইন্টারঅ্যাকশন টু নেক্সট পেইন্ট (INP) এর উন্নতির জন্য সবচেয়ে বড় সুযোগ রয়েছে। যাইহোক, যেহেতু অনেক কম সাইট তার অবচয়িত পূর্বসূরির তুলনায় "ভাল" অভিজ্ঞতার জন্য থ্রেশহোল্ড অতিক্রম করছে, আপনি অনেক ডেভেলপারদের মধ্যে হতে পারেন যারা প্রথমবারের মতো ইন্টারঅ্যাকশন প্রতিক্রিয়াশীলতাকে অপ্টিমাইজ করতে শিখছেন। INP উন্নত করার সবচেয়ে কার্যকর উপায়গুলির জন্য এই অবশ্যই জানা কৌশলগুলি দিয়ে শুরু করুন৷
1. দীর্ঘ টাস্ক আপ বিরতি প্রায়ই ফলন
কার্যগুলি হল ব্রাউজার যে কোনও বিচ্ছিন্ন কাজের অংশ, যার মধ্যে রেন্ডারিং, লেআউট, পার্সিং, কম্পাইল করা বা স্ক্রিপ্ট চালানো। যখন একটি টাস্ক 50 মিলিসেকেন্ডের সময়সীমা অতিক্রম করে, তখন এটি একটি দীর্ঘ কাজ হয়ে যায়। দীর্ঘ কাজগুলি সমস্যাযুক্ত কারণ তারা মূল থ্রেডটিকে ব্যবহারকারীর ইন্টারঅ্যাকশনে দ্রুত সাড়া দেওয়া থেকে ব্লক করতে পারে।
জাভাস্ক্রিপ্টে যতটা সম্ভব কম কাজ করার জন্য আপনার সবসময় চেষ্টা করা উচিত, আপনি দীর্ঘ টাস্কগুলি ভেঙে দিয়ে মূল থ্রেডটিকে সাহায্য করতে পারেন। আপনি প্রায়শই প্রধান থ্রেডের সাথে যোগ দিয়ে এটি করতে পারেন যাতে রেন্ডারিং আপডেট এবং অন্যান্য ব্যবহারকারীর ইন্টারঅ্যাকশন তাড়াতাড়ি ঘটতে পারে।
Scheduler API আপনাকে অগ্রাধিকারের একটি সিস্টেম ব্যবহার করে সারিবদ্ধভাবে কাজ করতে দেয়। বিশেষত, scheduler.yield() API দীর্ঘ টাস্কগুলিকে বিচ্ছিন্ন করে এবং নিশ্চিত করে যে মিথস্ক্রিয়াগুলি টাস্ক সারিতে তাদের জায়গা না ছেড়ে দিয়ে পরিচালনা করা যেতে পারে।
দীর্ঘ কাজগুলি ভেঙে, আপনি ব্রাউজারটিকে সমালোচনামূলক, ব্যবহারকারী-অবরুদ্ধ কাজগুলিতে ফিট করার জন্য আরও সুযোগ দিচ্ছেন৷
2. অপ্রয়োজনীয় জাভাস্ক্রিপ্ট এড়িয়ে চলুন
ওয়েবসাইটগুলি আগের চেয়ে বেশি জাভাস্ক্রিপ্ট শিপিং করছে , এবং প্রবণতা পরিবর্তন হচ্ছে বলে মনে হচ্ছে না। আপনি যখন খুব বেশি জাভাস্ক্রিপ্ট পাঠান, আপনি এমন একটি পরিবেশ তৈরি করছেন যেখানে কাজগুলি মূল থ্রেডের মনোযোগের জন্য প্রতিযোগিতা করছে। এটি আপনার ওয়েবসাইটের প্রতিক্রিয়াশীলতাকে প্রভাবিত করতে পারে, বিশেষ করে সেই গুরুত্বপূর্ণ স্টার্টআপ সময়কালে।
যাইহোক, এটি একটি অমীমাংসিত সমস্যা নয়, এবং আপনার কাছে বিকল্প রয়েছে:
- অপ্রয়োজনীয়, জাভাস্ক্রিপ্ট-ভিত্তিক বাস্তবায়নের পরিবর্তে বেসলাইন ব্যাপকভাবে উপলব্ধ ওয়েব প্ল্যাটফর্ম বৈশিষ্ট্যগুলি ব্যবহার করুন।
- আপনার স্ক্রিপ্টে অব্যবহৃত কোড খুঁজতে Chrome DevTools-এ কভারেজ টুল ব্যবহার করুন। স্টার্টআপের সময় প্রয়োজনীয় সংস্থানগুলির আকার হ্রাস করে, আপনি নিশ্চিত করতে পারেন যে পৃষ্ঠাগুলি কোড পার্সিং এবং সংকলন করতে কম সময় ব্যয় করে, যা একটি মসৃণ প্রাথমিক ব্যবহারকারীর অভিজ্ঞতা প্রদান করে।
- প্রাথমিক রেন্ডারের জন্য প্রয়োজনীয় নয় এমন কোডের জন্য একটি পৃথক বান্ডেল তৈরি করতে কোড স্প্লিটিং ব্যবহার করুন, তবে পরেও ব্যবহার করা হবে।
- আপনি যদি একটি ট্যাগ ম্যানেজার ব্যবহার করেন, পর্যায়ক্রমে আপনার ট্যাগগুলি অপ্টিমাইজ করুন ৷ আপনার ট্যাগ ম্যানেজারের জাভাস্ক্রিপ্ট পদচিহ্ন কমাতে অব্যবহৃত কোড সহ পুরানো ট্যাগগুলি সরানো যেতে পারে।
3. বড় রেন্ডারিং আপডেট এড়িয়ে চলুন
জাভাস্ক্রিপ্ট এক্সিকিউশন হল একটি জিনিস যা আপনার ওয়েবসাইটের প্রতিক্রিয়াশীলতাকে প্রভাবিত করে। রেন্ডারিং হল এক ধরনের ব্যয়বহুল কাজ-এবং বড় রেন্ডারিং আপডেটের সময়, আপনার ওয়েবসাইট ব্যবহারকারীর ইন্টারঅ্যাকশনে আরও ধীরে ধীরে সাড়া দিতে পারে।
রেন্ডারিং কাজ অপ্টিমাইজ করা একটি সহজবোধ্য প্রক্রিয়া নয়, এবং আপনি কি অর্জন করার চেষ্টা করছেন তার উপর নির্ভর করে। তা সত্ত্বেও, রেন্ডারিং কাজগুলি যাতে দীর্ঘ কাজ হয়ে না যায় তা নিশ্চিত করতে আপনি এখানে কিছু জিনিস করতে পারেন:
- জোরপূর্বক লেআউট এবং লেআউট থ্র্যাশিং এড়াতে আপনার জাভাস্ক্রিপ্ট কোডে DOM রিড এবং লেখে পুনর্গঠন করুন।
- DOM এর আকার ছোট রাখুন । DOM আকার এবং লেআউট কাজের তীব্রতা পারস্পরিক সম্পর্কযুক্ত। যখন রেন্ডারারকে একটি খুব বড় DOM-এর জন্য লেআউট আপডেট করতে হয়, তখন এর লেআউট পুনঃগণনা করার জন্য প্রয়োজনীয় কাজ উল্লেখযোগ্যভাবে বৃদ্ধি পেতে পারে।
- অফ-স্ক্রীন DOM বিষয়বস্তু অলসভাবে রেন্ডার করতে CSS কন্টেনমেন্ট ব্যবহার করুন । এটা সবসময় সহজবোধ্য নয়, কিন্তু জটিল লেআউট সমন্বিত এলাকাগুলোকে আলাদা করে আপনি অপ্রয়োজনীয় লেআউট এবং রেন্ডারিং কাজ এড়াতে পারেন।
সবচেয়ে বড় কন্টেন্টফুল পেইন্ট (LCP)
সবচেয়ে বড় কন্টেন্টফুল পেইন্ট (LCP) হল কোর ওয়েব অত্যাবশ্যক যেটির সাথে ডেভেলপারদের সবচেয়ে বেশি লড়াই করার প্রবণতা রয়েছে— Chrome UX রিপোর্টের 40% সাইট ভাল ব্যবহারকারীর অভিজ্ঞতার জন্য প্রস্তাবিত LCP থ্রেশহোল্ড পূরণ করে না। LCP উন্নত করার সবচেয়ে কার্যকর উপায় হিসেবে Chrome টিম নিম্নলিখিত কৌশলগুলি সুপারিশ করে৷
1. নিশ্চিত করুন যে এলসিপি সংস্থানটি HTML উত্স থেকে আবিষ্কারযোগ্য এবং অগ্রাধিকার দেওয়া হয়েছে৷
ক্রোম টিম ওয়েবে এলসিপি সংক্রান্ত নিম্নলিখিতগুলি লক্ষ্য করেছে:
- এইচটিটিপি আর্কাইভের 2024 ওয়েব অ্যালম্যানাক অনুসারে, 73% মোবাইল পৃষ্ঠাগুলির LCP উপাদান হিসাবে একটি চিত্র রয়েছে৷
- ক্রোম থেকে প্রকৃত-ব্যবহারকারীর ডেটার বিশ্লেষণ দেখায় যে দুর্বল LCP সহ বেশিরভাগ উত্স তাদের p75 LCP সময়ের 10% এরও কম সময় ব্যয় করে LCP ছবি ডাউনলোড করতে ।
- দুর্বল LCP সহ পৃষ্ঠাগুলির মধ্যে, তাদের LCP চিত্রগুলি লোড করতে ক্লায়েন্টের 75তম শতাংশে 1,290 মিলিসেকেন্ড বিলম্বিত হয় - এটি একটি দ্রুত অভিজ্ঞতার জন্য বাজেটের অর্ধেকেরও বেশি৷
- যে পৃষ্ঠাগুলিতে LCP উপাদানটি একটি চিত্র ছিল, সেই সমস্ত চিত্রগুলির 35% এর উত্স URL রয়েছে যা প্রাথমিক HTML প্রতিক্রিয়াতে আবিষ্কার করা যায় নি (যেমন
<img src="...">
বা<link rel="preload" href="...">
), যা ব্রাউজারের প্রিলোড স্ক্যানারকে যত তাড়াতাড়ি সম্ভব সেগুলি আবিষ্কার করার অনুমতি দেবে৷ - ওয়েব অ্যালম্যানাক অনুসারে, 15% যোগ্য পৃষ্ঠাগুলি সংস্থানগুলিকে উচ্চ অগ্রাধিকার দেওয়ার জন্য
fetchpriority
অ্যাট্রিবিউটের সুবিধা গ্রহণ করছে—যেগুলি তুলনামূলকভাবে অল্প প্রচেষ্টায় একটি পৃষ্ঠার LCP উন্নত করতে পারে।
এই পরিসংখ্যানগুলি বলছে যে ডেভেলপারদের টেবিলে এলসিপি চিত্রগুলির জন্য রিসোর্স লোড বিলম্ব এবং রিসোর্স লোডের সময়কাল উভয়ই কমানোর একটি বড় সুযোগ রয়েছে৷
যেখানে রিসোর্স লোড বিলম্ব সমস্যা, এটি মনে রাখা গুরুত্বপূর্ণ যে ভাল LCP অর্জন করতে ইতিমধ্যেই অনেক দেরি হয়ে যেতে পারে যদি ছবিগুলি লোড করা শুরু করার আগে একটি পৃষ্ঠার সম্পূর্ণরূপে CSS বা JavaScript লোড হওয়ার জন্য অপেক্ষা করতে হয়৷ আরও, একটি LCP ইমেজের রিসোর্স লোডের সময়কালকে পুনরায় প্রাধান্য দিয়ে কমানো যেতে পারে যাতে এটি আরও ব্যান্ডউইথ পায় এবং এইভাবে fetchpriority
HTML অ্যাট্রিবিউট ব্যবহার করে আরও দ্রুত লোড হয়।
যদি আপনার LCP উপাদানটি একটি ছবি হয়, তাহলে রিসোর্স লোডের বিলম্ব কমাতে ছবির URLটি HTML প্রতিক্রিয়ায় আবিষ্কারযোগ্য হওয়া উচিত। এটি সম্ভব করার জন্য কিছু টিপস হল:
-
src
বাsrcset
বৈশিষ্ট্য সহ একটি<img>
উপাদান ব্যবহার করে চিত্রটি লোড করুন।data-src
মতো নন-স্ট্যান্ডার্ড অ্যাট্রিবিউট ব্যবহার করবেন না যাতে রেন্ডার করার জন্য জাভাস্ক্রিপ্টের প্রয়োজন হয়, কারণ এটি সবসময় ধীর হবে। পৃষ্ঠাগুলির 7%data-src
পিছনে তাদের LCP চিত্রকে অস্পষ্ট করে। - ক্লায়েন্ট-সাইড রেন্ডারিং (CSR) এর চেয়ে সার্ভার-সাইড রেন্ডারিং (SSR) পছন্দ করুন, কারণ SSR বোঝায় যে সম্পূর্ণ পৃষ্ঠা মার্কআপ (ছবি সহ) HTML উত্সে উপস্থিত রয়েছে৷ CSR সমাধানের জন্য ইমেজ আবিষ্কার করার আগে JavaScript চালানোর প্রয়োজন হয়।
- যদি আপনার ছবিকে একটি বাহ্যিক CSS বা JS ফাইল থেকে উল্লেখ করার প্রয়োজন হয়, তাহলেও আপনি একটি
<link rel="preload">
ট্যাগ ব্যবহার করে এটিকে HTML উৎসে অন্তর্ভুক্ত করতে পারেন। নোট করুন যে ইনলাইন শৈলী দ্বারা উল্লেখ করা ছবিগুলি ব্রাউজারের প্রিলোড স্ক্যানার দ্বারা আবিষ্কৃত হয় না, তাই যদিও সেগুলি HTML উত্সে পাওয়া যায়, তবুও সেগুলির আবিষ্কার অন্যান্য সংস্থানগুলি লোড করার সময় অবরুদ্ধ হতে পারে, তাই প্রিলোডিং এই ক্ষেত্রে সাহায্য করতে পারে৷
আরও, আপনি LCP রিসোর্স তাড়াতাড়ি লোড হয়েছে তা নিশ্চিত করে এবং উচ্চ অগ্রাধিকারে একটি সংস্থানের লোডের সময়কাল সংক্ষিপ্ত করতে পারেন:
- আপনার LCP ছবির
<img>
বা<link rel="preload">
ট্যাগেfetchpriority="high"
অ্যাট্রিবিউট যোগ করুন। এটি ইমেজ রিসোর্সের অগ্রাধিকার বাড়ায় তাই এটি শীঘ্রই লোড করা শুরু করতে পারে। - আপনার LCP চিত্রের
<img>
ট্যাগ থেকেloading="lazy"
বৈশিষ্ট্যটি সরান। এটি ভিউপোর্টে বা তার কাছাকাছি চিত্রটি উপস্থিত হয়েছে তা নিশ্চিত করার কারণে লোড বিলম্ব এড়ায়। - সম্ভব হলে অ-সমালোচনা সংস্থান বিলম্বিত করুন। এই সম্পদগুলিকে আপনার নথির শেষে সরানো, অলস-লোড করা ছবি বা iframes , অথবা JavaScript ব্যবহার করে এগুলিকে অ্যাসিঙ্ক্রোনাসভাবে লোড করা LCP ছবির মতো আরও গুরুত্বপূর্ণ সংস্থানগুলিকে আরও দ্রুত লোড করার পথ পরিষ্কার করতে সাহায্য করবে৷
2. তাত্ক্ষণিক নেভিগেশনের জন্য লক্ষ্য করুন
আদর্শ ব্যবহারকারীর অভিজ্ঞতার জন্য কখনই একটি পৃষ্ঠা লোড হওয়ার জন্য অপেক্ষা করতে হবে না। LCP অপ্টিমাইজেশান যেমন রিসোর্স আবিষ্কারযোগ্যতা এবং অগ্রাধিকার একটি ব্যবহারকারী LCP উপাদান লোড এবং রেন্ডার করার জন্য কতক্ষণ অপেক্ষা করে তা কমাতে কার্যকর—কিন্তু এই বাইটগুলি নেটওয়ার্কে কত দ্রুত লোড হবে এবং একটি পৃষ্ঠায় রেন্ডার হবে তার একটি শারীরিক সীমা রয়েছে৷ ঠিক আছে আপনি সেই সীমাতে পৌঁছানোর আগে, আরও কয়েক মিলিসেকেন্ড শেভ করার জন্য একটি নিষেধমূলকভাবে উচ্চ পরিমাণ প্রচেষ্টা প্রয়োজন। সুতরাং, তাত্ক্ষণিক নেভিগেশন অর্জনের জন্য, আমাদের একটি আমূল ভিন্ন পদ্ধতি গ্রহণ করতে হবে।
ব্যবহারকারী সেখানে নেভিগেট করা শুরু করার আগে তাত্ক্ষণিক নেভিগেশন পৃষ্ঠাটি লোড এবং রেন্ডার করার চেষ্টা করে। এইভাবে, প্রি-রেন্ডার করা পৃষ্ঠাটি প্রায়-শূন্য LCP সহ অবিলম্বে প্রদর্শিত হতে পারে। পুনরুদ্ধার এবং অনুমান এটি করার দুটি উপায়। যখন একজন ব্যবহারকারী পূর্বে পরিদর্শন করা পৃষ্ঠায় পিছনে বা ফরোয়ার্ড নেভিগেট করেন, তখন এটি একটি ইন-মেমরি ক্যাশে থেকে দ্রুত পুনরুদ্ধার করা যেতে পারে, ব্যবহারকারী যেমন এটি ছেড়েছে ঠিক সেইভাবে প্রদর্শিত হবে। বিকল্পভাবে, ওয়েব অ্যাপ্লিকেশানগুলি ভবিষ্যদ্বাণী করার চেষ্টা করতে পারে যে একজন ব্যবহারকারী পরবর্তীতে কোথায় যাবে—এবং সঠিক হলে, পরবর্তী পৃষ্ঠাটি ইতিমধ্যেই লোড হয়ে যাবে এবং ব্যবহারকারী যখন সেখানে নেভিগেট করবে ততক্ষণে রেন্ডার করা হবে।
পূর্বে পরিদর্শন করা পৃষ্ঠাগুলি পুনরুদ্ধার করা ব্যাক/ফরওয়ার্ড ক্যাশে (bfcache) দ্বারা সম্ভব হয়েছে। এটি ব্যবহার করার জন্য, আপনাকে অবশ্যই নিশ্চিত করতে হবে যে আপনার পৃষ্ঠাগুলি bfcache যোগ্যতার মানদণ্ড পূরণ করে৷ পৃষ্ঠাগুলি bfcache-এর জন্য যোগ্য না হওয়ার সাধারণ কারণগুলি হল no-store
ক্যাশিং নির্দেশাবলীর সাথে পরিবেশন করা হয়েছে বা ইভেন্ট শ্রোতা unload
হয়েছে৷
সম্পূর্ণরূপে রেন্ডার করা পৃষ্ঠাগুলি পুনরুদ্ধার করা শুধুমাত্র লোডিং কর্মক্ষমতাই নয়, লেআউটের স্থায়িত্বও উন্নত করে৷ আপনি bfcache সম্পর্কে আরও জানতে পারেন এবং CLS এর উন্নতির জন্য এটি কতটা কার্যকর তা নিশ্চিত করুন পৃষ্ঠাগুলি bfcache বিভাগে যোগ্য ।
ব্যবহারকারীর ভিজিট করা পরবর্তী পৃষ্ঠায় প্রি-রেন্ডার করা হল নাটকীয়ভাবে LCP পারফরম্যান্স উন্নত করার আরেকটি কার্যকর উপায়, এবং এটি স্পেকুলেশন রুলস API দ্বারা সম্ভব হয়েছে। এই লাভগুলি উপলব্ধি করতে, যদিও, নিশ্চিত করুন যে সঠিক পৃষ্ঠাগুলি আগে থেকে রেন্ডার করা হয়েছে। ভুল অনুমান সার্ভার এবং ক্লায়েন্ট উভয়ের সম্পদ নষ্ট করে, যা কর্মক্ষমতা ক্ষতিগ্রস্থ করতে পারে। সুতরাং পরবর্তী পৃষ্ঠাটি কী হবে সে সম্পর্কে আপনি যত কম আত্মবিশ্বাসী, এটিকে প্রি-রেন্ডার করার ক্ষেত্রে আপনার আরও রক্ষণশীল হওয়া উচিত। সন্দেহ হলে, আপনার বিশ্লেষণের ডেটা আপনাকে পরবর্তী পরিদর্শন করার সর্বোচ্চ সম্ভাবনা সহ আরও আগ্রহের সাথে প্রি-রেন্ডার পৃষ্ঠাগুলিতে আত্মবিশ্বাস দিতে পারে।
3. TTFB অপ্টিমাইজ করতে একটি CDN ব্যবহার করুন৷
পূর্ববর্তী সুপারিশটি তাত্ক্ষণিক নেভিগেশনের উপর দৃষ্টি নিবদ্ধ করে, যা ব্যবহারকারীদের সর্বোত্তম সম্ভাব্য অভিজ্ঞতা প্রদান করে, কিন্তু এমন পরিস্থিতি হতে পারে যেখানে bfcache এবং অনুমানমূলক লোডিং কৌশলগুলি প্রযোজ্য নয়৷ আপনার সাইটের একটি ক্রস-অরিজিন লিঙ্ক অনুসরণকারী ব্যবহারকারীকে বিবেচনা করুন যেখানে প্রাথমিক HTML ডকুমেন্ট প্রতিক্রিয়া কার্যকরভাবে LCP ব্লক করে। রেসপন্সের প্রথম বাইট না পাওয়া পর্যন্ত ব্রাউজার কোনো সাবরিসোর্স লোড করা শুরু করতে পারে না। যত তাড়াতাড়ি ঘটবে, তত তাড়াতাড়ি অন্য সবকিছু ঘটতে শুরু করবে।
এই সময়টিকে টাইম টু ফার্স্ট বাইট (TTFB) বলা হয়। TTFB কমানোর সর্বোত্তম উপায় হল:
- ভৌগলিকভাবে যতটা সম্ভব আপনার ব্যবহারকারীদের কাছে আপনার সামগ্রী পরিবেশন করুন।
- সেই বিষয়বস্তুটি ক্যাশে করুন যাতে অদূর ভবিষ্যতে আবার অনুরোধ করা হলে এটি দ্রুত পরিবেশন করা যায়।
এই দুটি জিনিস করার সর্বোত্তম উপায় হল একটি CDN ব্যবহার করা । CDNs আপনার সংস্থানগুলি বিশ্বজুড়ে প্রান্তের সার্ভারগুলিতে বিতরণ করে, এইভাবে সেই সংস্থানগুলিকে ব্যবহারকারীদের কাছে তারের উপর দিয়ে ভ্রমণ করতে হবে এমন দূরত্ব সীমিত করে৷ CDN-এ সাধারণত সূক্ষ্ম-দানাযুক্ত ক্যাশিং নিয়ন্ত্রণ থাকে যা আপনার সাইটের প্রয়োজনের জন্য টুইক করা যেতে পারে।
সিডিএনগুলি এইচটিএমএল ডকুমেন্টগুলিও পরিবেশন করতে এবং ক্যাশে করতে পারে, তবে ওয়েব অ্যালমানাক অনুসারে, 33% এইচটিএমএল ডকুমেন্ট অনুরোধগুলি একটি CDN থেকে দেওয়া হয়েছিল ৷ এর মানে হল অতিরিক্ত সঞ্চয় উপলব্ধি করার জন্য সাইটগুলির জন্য একটি উল্লেখযোগ্য সুযোগ রয়েছে৷
CDN কনফিগার করার জন্য কিছু টিপস অন্তর্ভুক্ত:
- ক্যাশে স্ট্যাটিক এইচটিএমএল ডকুমেন্ট এমনকি অল্প সময়ের জন্য। উদাহরণস্বরূপ, বিষয়বস্তু সবসময় তাজা হওয়া কি গুরুত্বপূর্ণ? নাকি কয়েক মিনিট বাসি হতে পারে?
- আপনি আপনার অরিজিন সার্ভারে চলমান গতিশীল লজিককে প্রান্তে নিয়ে যেতে পারেন কিনা তা অন্বেষণ করুন, যা বেশিরভাগ আধুনিক CDN-এর বৈশিষ্ট্য।
যে কোনো সময় আপনি প্রান্ত থেকে সরাসরি সামগ্রী পরিবেশন করতে পারেন এবং আপনার অরিজিন সার্ভারে ট্রিপ এড়াতে পারেন এটি একটি পারফরম্যান্স জয়। এমনকি এমন ক্ষেত্রেও যেখানে আপনাকে যাত্রা শুরুর পুরো পথটি করতে হবে, সিডিএনগুলি সাধারণত এটি আরও দ্রুত করার জন্য অপ্টিমাইজ করা হয়, তাই এটি যে কোনও উপায়ে একটি জয়।
ক্রমবর্ধমান লেআউট শিফট (CLS)
Cumulative Layout Shift (CLS) হল একটি ওয়েব পেজের ভিজ্যুয়াল স্থায়িত্বের পরিমাপ। যদিও CLS হল মেট্রিক বেশিরভাগ সাইটেই ভাল করার প্রবণতা রয়েছে, তাদের প্রায় এক চতুর্থাংশ এখনও প্রস্তাবিত থ্রেশহোল্ড পূরণ করে না, তাই অনেক সাইটের জন্য তাদের ব্যবহারকারীর অভিজ্ঞতা উন্নত করার একটি বড় সুযোগ রয়েছে।
1. পৃষ্ঠা থেকে লোড করা যেকোনো বিষয়বস্তুর উপর সুস্পষ্ট আকার সেট করুন
অন্যান্য বিষয়বস্তু লোড হওয়া শেষ হওয়ার পরে বিদ্যমান সামগ্রী সরে গেলে সাধারণত লেআউট পরিবর্তন ঘটে। CLS উন্নত করার প্রাথমিক উপায় হল প্রয়োজনীয় স্থান যতটা সম্ভব আগে থেকে সংরক্ষণ করা।
আকারবিহীন চিত্রগুলির কারণে সৃষ্ট লেআউট পরিবর্তনগুলি ঠিক করার সর্বোত্তম উপায় হল স্পষ্টভাবে width
এবং height
বৈশিষ্ট্যগুলি বা তাদের সমতুল্য CSS বৈশিষ্ট্যগুলি সেট করা ৷ 66% পৃষ্ঠাগুলিতে কমপক্ষে একটি আকারবিহীন চিত্র রয়েছে। একটি সুস্পষ্ট আকার ছাড়া, এই চিত্রগুলির একটি প্রাথমিক উচ্চতা 0px
, যা এই চিত্রগুলি লোড হলে এবং ব্রাউজার তাদের মাত্রাগুলি আবিষ্কার করার সময় লেআউট পরিবর্তনের কারণ হতে পারে৷ এটি যৌথ ওয়েবের জন্য একটি বিশাল সুযোগের প্রতিনিধিত্ব করে—এবং সেই সুযোগের জন্য এই নির্দেশিকায় প্রস্তাবিত অন্যান্য সুপারিশগুলির তুলনায় কম প্রচেষ্টার প্রয়োজন।
সিএলএস-এর জন্য ছবিই একমাত্র অবদানকারী নয়। লেআউট পরিবর্তন অন্যান্য সামগ্রীর কারণে হতে পারে যা সাধারণত পৃষ্ঠাটি প্রাথমিকভাবে রেন্ডার হওয়ার পরে লোড হয়, তৃতীয় পক্ষের বিজ্ঞাপন বা এম্বেড করা ভিডিও সহ। aspect-ratio
সম্পত্তি এখানে সাহায্য করতে পারে. এটি একটি বেসলাইন ব্যাপকভাবে উপলব্ধ সিএসএস বৈশিষ্ট্য যা ডেভেলপারদের স্পষ্টভাবে চিত্রগুলির পাশাপাশি অ-চিত্র উপাদানগুলিতে একটি দিক অনুপাত সেট করতে দেয়৷ এটি আপনাকে একটি গতিশীল width
(উদাহরণস্বরূপ স্ক্রীনের আকারের উপর ভিত্তি করে) সেট করতে দেয় এবং ব্রাউজারটিকে স্বয়ংক্রিয়ভাবে উপযুক্ত উচ্চতা গণনা করতে দেয়, অনেকটা একইভাবে এটি মাত্রা সহ চিত্রগুলির জন্য করে।
যাইহোক, গতিশীল সামগ্রীর সঠিক আকার জানা সবসময় সম্ভব নয়। এমনকি আপনি সঠিক আকার না জানলেও, আপনি এখনও লেআউট পরিবর্তনের তীব্রতা কমাতে পারেন। একটি খালি উপাদানের জন্য ব্রাউজারকে 0px
এর ডিফল্ট উচ্চতা ব্যবহার করার অনুমতি দেওয়ার চেয়ে একটি সংবেদনশীল min-height
সেট করা প্রায় সবসময়ই ভাল। একটি min-height
ব্যবহার করাও সাধারণত একটি সহজবোধ্য সমাধান, কারণ এটি এখনও প্রয়োজনে ধারকটিকে চূড়ান্ত বিষয়বস্তুর উচ্চতায় বাড়তে দেয়—এটি আশা করা যায় যে আরও সহনীয় পর্যায়ে বৃদ্ধির পরিমাণ হ্রাস করেছে৷
2. নিশ্চিত করুন যে পৃষ্ঠাগুলি bfcache এর জন্য যোগ্য
এই নির্দেশিকায় আগেই বলা হয়েছে, ব্যাক/ফরোয়ার্ড ক্যাশে (bfcache) তাৎক্ষণিকভাবে একটি মেমরি স্ন্যাপশট থেকে ব্রাউজার ইতিহাসের আগের বা পরে একটি পৃষ্ঠা লোড করে। যদিও bfcache একটি উল্লেখযোগ্য ব্রাউজার-স্তরের পারফরম্যান্স অপ্টিমাইজেশান যা LCP উন্নত করে, এটি সম্পূর্ণরূপে লেআউট পরিবর্তনগুলিকেও দূর করে। আসলে, 2022 সালে bfcache এর প্রবর্তন CLS-এর সবচেয়ে বড় উন্নতির জন্য দায়ী ছিল যা আমরা সেই বছর দেখেছিলাম।
তা সত্ত্বেও, উল্লেখযোগ্য সংখ্যক ওয়েবসাইট bfcache-এর জন্য অযোগ্য, এবং তাই এই বিনামূল্যের ওয়েব পারফরম্যান্স জয় থেকে বাদ পড়ছে। আপনার পৃষ্ঠাটি সংবেদনশীল তথ্য লোড না করা পর্যন্ত আপনি মেমরি থেকে পুনরুদ্ধার করতে চান না, নিশ্চিত করুন যে আপনার পৃষ্ঠাগুলি bfcache ব্যবহার করার যোগ্য৷
সাইটের মালিকদের অবশ্যই পৃষ্ঠাগুলি bfcache-এর জন্য যোগ্য কিনা তা পরীক্ষা করা উচিত এবং সেগুলি কেন নয় তা ঠিক করা উচিত৷ DevTools-এ Chrome-এর একটি bfcache পরীক্ষক রয়েছে এবং আপনি ক্ষেত্রের অযোগ্যতার কারণগুলি সনাক্ত করতে নট রিস্টোরড রিজনস API ব্যবহার করতে পারেন৷
3. অ্যানিমেশন এবং রূপান্তরগুলি এড়িয়ে চলুন যা লেআউট-প্ররোচিত CSS বৈশিষ্ট্যগুলি ব্যবহার করে
লেআউট পরিবর্তনের আরেকটি সাধারণ উৎস হল যখন উপাদানগুলি অ্যানিমেটেড করা হয়। উদাহরণস্বরূপ, কুকি ব্যানার বা অন্যান্য বিজ্ঞপ্তি ব্যানার যা উপরে বা নীচে থেকে স্লাইড করে প্রায়ই CLS-এ অবদান রাখে। এটি বিশেষত সমস্যাযুক্ত যখন এই ব্যানারগুলি অন্যান্য বিষয়বস্তুকে পথের বাইরে ঠেলে দেয়, কিন্তু এমনকি যখন তারা না করে, তখনও তাদের অ্যানিমেট করা CLSকে প্রভাবিত করতে পারে।
যদিও HTTP আর্কাইভ ডেটা চূড়ান্তভাবে অ্যানিমেশনগুলিকে লেআউট শিফটের সাথে সংযুক্ত করতে পারে না, ডেটা দেখায় যে লেআউটকে প্রভাবিত করতে পারে এমন কোনও CSS প্রপার্টি অ্যানিমেট করে এমন পৃষ্ঠাগুলি সামগ্রিক পৃষ্ঠাগুলির তুলনায় "ভাল" CLS হওয়ার সম্ভাবনা 15% কম। কিছু বৈশিষ্ট্য অন্যদের তুলনায় খারাপ CLS এর সাথে যুক্ত। উদাহরণ স্বরূপ, যে পৃষ্ঠাগুলি অ্যানিমেট margin
বা border
প্রস্থে "খারাপ" CLS আছে তার প্রায় দ্বিগুণ হারে পৃষ্ঠাগুলিকে দরিদ্র হিসাবে মূল্যায়ন করা হয়।
এটি সম্ভবত আশ্চর্যজনক নয়, কারণ যেকোন সময় আপনি যেকোন লেআউট-ইনডিউকিং সিএসএস প্রপার্টি ট্রানজিশন বা অ্যানিমেট করেন, এর ফলে লেআউট শিফট হবে। যদি এই লেআউট শিফটগুলি ব্যবহারকারীর ইন্টারঅ্যাকশনের 500 মিলিসেকেন্ডের মধ্যে না হয়, তাহলে সেগুলি CLS-কে প্রভাবিত করবে।
কিছু ডেভেলপারদের কাছে আশ্চর্যজনক হতে পারে যে এটি এমন ক্ষেত্রেও সত্য যেখানে উপাদানটি স্বাভাবিক নথি প্রবাহের বাইরে নেওয়া হয়। উদাহরণ স্বরূপ, একেবারে পজিশন করা উপাদান যা top
বা left
অ্যানিমেট করে লেআউট শিফট করে, এমনকি যদি তারা অন্য কন্টেন্টকে আশেপাশে ঠেলে না দেয়। যাইহোক, যদি top
বা left
অ্যানিমেট করার পরিবর্তে, আপনি transform:translateX()
বা transform:translateY()
অ্যানিমেট করেন, তাহলে এটি ব্রাউজারকে পৃষ্ঠার বিন্যাস আপডেট করতে দেবে না, এইভাবে লেআউট পরিবর্তনগুলি এড়িয়ে যাবে।
ব্রাউজারের কম্পোজিটর থ্রেডে আপডেট করা যেতে পারে এমন CSS বৈশিষ্ট্যগুলির অ্যানিমেশন পছন্দ করা দীর্ঘকাল ধরে একটি কর্মক্ষমতার সর্বোত্তম অভ্যাস ছিল কারণ এটি মূল থ্রেড থেকে GPU-তে কাজ করে। এটি একটি সাধারণ পারফরম্যান্সের সর্বোত্তম অনুশীলন হওয়ার পাশাপাশি, এটি CLS উন্নত করতেও সাহায্য করতে পারে।
একটি সাধারণ নিয়ম হিসাবে, কখনই CSS বৈশিষ্ট্যগুলিকে অ্যানিমেট বা ট্রানজিশন করবেন না যেগুলির জন্য ব্রাউজারকে পৃষ্ঠার লেআউট আপডেট করতে হবে, যদি না আপনি এটি ব্যবহারকারীর ট্যাপ বা কী প্রেসের প্রতিক্রিয়া হিসাবে করছেন (যদিও hover
না করেন )। যখনই সম্ভব, CSS transform
প্রপার্টি ব্যবহার করে ট্রানজিশন এবং অ্যানিমেশন পছন্দ করুন।
এড়িয়ে চলুন নন-কম্পোজিটেড অ্যানিমেশন লাইটহাউস অডিট সতর্ক করে যখন কোনো পৃষ্ঠা অ্যানিমেট করে সম্ভাব্য ধীরগতির CSS বৈশিষ্ট্য।
উপসংহার
পৃষ্ঠার কর্মক্ষমতা উন্নত করা কঠিন বলে মনে হতে পারে, বিশেষ করে বিবেচনা করার জন্য ওয়েব জুড়ে নির্দেশনার পাহাড় রয়েছে। যাইহোক, সবচেয়ে কার্যকরী সর্বোত্তম অনুশীলনের এই সংক্ষিপ্ত তালিকার উপর ফোকাস করে, আপনি নতুন করে ফোকাস দিয়ে সমস্যাটির কাছে যেতে পারেন এবং আশা করি আপনার ওয়েবসাইটের মূল ওয়েব ভাইটালগুলির জন্য সুই সরাতে পারেন।
আপনি যদি এখানে তালিকাভুক্ত অপ্টিমাইজেশনের বাইরে যেতে চান তবে আরও তথ্যের জন্য এই নির্দেশিকাগুলি পড়ুন:
পরিশিষ্ট: লগ পরিবর্তন করুন
কখন এবং কেন শীর্ষ সুপারিশগুলি পরিবর্তিত হয়েছে তা ব্যাখ্যা করতে এই নথিতে প্রধান পরিবর্তনগুলি এখানে ট্র্যাক করা হবে৷
অক্টোবর 2024
2024 আপডেট:
- আইএনপি
- কোর ওয়েব ভাইটাল মেট্রিক হিসাবে INP চালু করার সাথে সাথে আমরা এই মেট্রিকটিকে FID থেকে INP তে স্যুইচ করেছি এবং এটিকে তালিকার শীর্ষ মেট্রিক বানিয়েছি।
- আমরা দীর্ঘ টাস্কগুলি ভাঙার অংশ হিসাবে
isInputPending
API ব্যবহার করার জন্য আমাদের সুপারিশকে উল্টে দিয়েছি। অপ্টিমাইজ লং টাস্ক নিবন্ধে আপনি আমাদের যুক্তি সম্পর্কে আরও জানতে পারেন।
- এলসিপি
- আমরা আবিষ্কারযোগ্যতা এবং অগ্রাধিকারের সুপারিশগুলিকে একটিতে একত্রিত করেছি৷
- তাত্ক্ষণিক নেভিগেশনের লক্ষ্যে আমরা একটি নতুন সুপারিশ যুক্ত করেছি।
জানুয়ারী 2023
এটি সুপারিশের প্রাথমিক তালিকা:
- এলসিপি
- নিশ্চিত করুন যে LCP সংস্থানটি HTML উৎস থেকে আবিষ্কারযোগ্য
- LCP সংস্থানকে অগ্রাধিকার দেওয়া হয়েছে তা নিশ্চিত করুন
- ডকুমেন্ট এবং রিসোর্স TTFB অপ্টিমাইজ করতে একটি CDN ব্যবহার করুন
- সিএলএস
- পৃষ্ঠা থেকে লোড করা যেকোনো বিষয়বস্তুতে স্পষ্ট আকার সেট করুন
- নিশ্চিত করুন যে পৃষ্ঠাগুলি bfcache এর জন্য যোগ্য
- অ্যানিমেশন এবং রূপান্তরগুলি এড়িয়ে চলুন যেগুলি লেআউট-প্ররোচিত CSS বৈশিষ্ট্যগুলি ব্যবহার করে
- এফআইডি
- দীর্ঘ কাজ এড়িয়ে চলুন বা বিরতি দিন
- অপ্রয়োজনীয় জাভাস্ক্রিপ্ট এড়িয়ে চলুন
- বড় রেন্ডারিং আপডেট এড়িয়ে চলুন
আপনি একটি ভিডিও সারাংশের জন্য এই 2023 Google I/O উপস্থাপনাটিও দেখতে পারেন।
,বছরের পর বছর ধরে, ওয়েব সম্প্রদায় ওয়েব পারফরম্যান্স অপ্টিমাইজেশান জ্ঞানের ভাণ্ডার তৈরি করেছে। যদিও যেকোন একটি অপ্টিমাইজেশন অনেক সাইটের জন্য কর্মক্ষমতা উন্নত করতে পারে, সেগুলি একসাথে অপ্রতিরোধ্য বোধ করতে পারে এবং বাস্তবে, শুধুমাত্র তাদের মধ্যে কিছু যেকোন সাইটে প্রযোজ্য।
ওয়েব পারফরম্যান্স আপনার দিনের কাজ না হলে, আপনার সাইটের জন্য কোন অপ্টিমাইজেশনগুলি সবচেয়ে বেশি প্রভাব ফেলবে তা সম্ভবত স্পষ্ট নয়। আপনার কাছে সম্ভবত সেগুলির জন্য সময় থাকবে না, তাই নিজেকে জিজ্ঞাসা করা গুরুত্বপূর্ণ যে আপনি আপনার ব্যবহারকারীদের জন্য পারফরম্যান্স উন্নত করতে সবচেয়ে প্রভাবশালী অপ্টিমাইজেশানগুলি কী বেছে নিতে পারেন?
পারফরম্যান্স অপ্টিমাইজেশন সম্পর্কে এখানে সত্য: আপনি কেবল তাদের প্রযুক্তিগত যোগ্যতার ভিত্তিতে তাদের বিচার করতে পারবেন না। আপনাকে মানবিক এবং সাংগঠনিক কারণগুলিও বিবেচনা করতে হবে যা প্রভাবিত করে যে আপনি যে কোনও অপ্টিমাইজেশান বাস্তবায়ন করতে সক্ষম হবেন। কিছু কর্মক্ষমতা উন্নতি তাত্ত্বিকভাবে ব্যাপকভাবে প্রভাবশালী হতে পারে, কিন্তু বাস্তবে, কিছু ডেভেলপারের কাছে সেগুলি বাস্তবায়ন করার জন্য সময় বা সংস্থান থাকবে। অন্যদিকে, অত্যন্ত প্রভাবশালী পারফরম্যান্সের সর্বোত্তম অনুশীলন থাকতে পারে যা প্রায় সবাই ইতিমধ্যে অনুসরণ করছে। এই নির্দেশিকাটি ওয়েব পারফরম্যান্স অপ্টিমাইজেশানগুলি চিহ্নিত করে যা:
- সবচেয়ে বড় বাস্তব বিশ্বের প্রভাব আছে
- প্রাসঙ্গিক এবং অধিকাংশ সাইটে প্রযোজ্য
- বেশিরভাগ বিকাশকারীদের বাস্তবায়নের জন্য বাস্তবসম্মত
একসাথে নেওয়া, এইগুলি হল সবচেয়ে বাস্তবসম্মত এবং প্রভাবশালী উপায় যা আপনি আপনার কোর ওয়েব ভাইটাল মেট্রিক্স উন্নত করতে পারেন। আপনি যদি ওয়েব পারফরম্যান্সে নতুন হন—অথবা আপনি যদি এখনও সিদ্ধান্ত নিচ্ছেন যে কী আপনাকে বিনিয়োগে সবচেয়ে বেশি রিটার্ন দেবে—সেটি শুরু করার সেরা জায়গা।
নেক্সট পেইন্টের সাথে মিথস্ক্রিয়া (INP)
নতুন কোর ওয়েব ভাইটাল মেট্রিক হিসাবে, ইন্টারঅ্যাকশন টু নেক্সট পেইন্ট (INP) এর উন্নতির জন্য সবচেয়ে বড় সুযোগ রয়েছে। যাইহোক, যেহেতু অনেক কম সাইট তার অবচয়িত পূর্বসূরির তুলনায় "ভাল" অভিজ্ঞতার জন্য থ্রেশহোল্ড অতিক্রম করছে, আপনি অনেক ডেভেলপারদের মধ্যে হতে পারেন যারা প্রথমবারের মতো ইন্টারঅ্যাকশন প্রতিক্রিয়াশীলতাকে অপ্টিমাইজ করতে শিখছেন। INP উন্নত করার সবচেয়ে কার্যকর উপায়গুলির জন্য এই অবশ্যই জানা কৌশলগুলি দিয়ে শুরু করুন৷
1. দীর্ঘ টাস্ক আপ বিরতি প্রায়ই ফলন
কার্যগুলি হল ব্রাউজার যে কোনও বিচ্ছিন্ন কাজের অংশ, যার মধ্যে রেন্ডারিং, লেআউট, পার্সিং, কম্পাইল করা বা স্ক্রিপ্ট চালানো। যখন একটি টাস্ক 50 মিলিসেকেন্ডের সময়সীমা অতিক্রম করে, তখন এটি একটি দীর্ঘ কাজ হয়ে যায়। দীর্ঘ কাজগুলি সমস্যাযুক্ত কারণ তারা মূল থ্রেডটিকে ব্যবহারকারীর ইন্টারঅ্যাকশনে দ্রুত সাড়া দেওয়া থেকে ব্লক করতে পারে।
জাভাস্ক্রিপ্টে যতটা সম্ভব কম কাজ করার জন্য আপনার সবসময় চেষ্টা করা উচিত, আপনি দীর্ঘ টাস্কগুলি ভেঙে দিয়ে মূল থ্রেডটিকে সাহায্য করতে পারেন। আপনি প্রায়শই প্রধান থ্রেডের সাথে যোগ দিয়ে এটি করতে পারেন যাতে রেন্ডারিং আপডেট এবং অন্যান্য ব্যবহারকারীর ইন্টারঅ্যাকশন তাড়াতাড়ি ঘটতে পারে।
Scheduler API আপনাকে অগ্রাধিকারের একটি সিস্টেম ব্যবহার করে সারিবদ্ধভাবে কাজ করতে দেয়। বিশেষত, scheduler.yield() API দীর্ঘ টাস্কগুলিকে বিচ্ছিন্ন করে এবং নিশ্চিত করে যে মিথস্ক্রিয়াগুলি টাস্ক সারিতে তাদের জায়গা না ছেড়ে দিয়ে পরিচালনা করা যেতে পারে।
দীর্ঘ টাস্কগুলি ভেঙে, আপনি ব্রাউজারটিকে সমালোচনামূলক, ব্যবহারকারী-অবরুদ্ধ কাজের জন্য আরও সুযোগ দিচ্ছেন।
2. অপ্রয়োজনীয় জাভাস্ক্রিপ্ট এড়িয়ে চলুন
ওয়েবসাইটগুলি আগের চেয়ে বেশি জাভাস্ক্রিপ্ট শিপিং করছে , এবং প্রবণতা পরিবর্তন হচ্ছে বলে মনে হচ্ছে না। আপনি যখন খুব বেশি জাভাস্ক্রিপ্ট পাঠান, আপনি এমন একটি পরিবেশ তৈরি করছেন যেখানে কাজগুলি মূল থ্রেডের মনোযোগের জন্য প্রতিযোগিতা করছে। এটি আপনার ওয়েবসাইটের প্রতিক্রিয়াশীলতাকে প্রভাবিত করতে পারে, বিশেষ করে সেই গুরুত্বপূর্ণ স্টার্টআপ সময়কালে।
যাইহোক, এটি একটি অমীমাংসিত সমস্যা নয়, এবং আপনার কাছে বিকল্প রয়েছে:
- অপ্রয়োজনীয়, জাভাস্ক্রিপ্ট-ভিত্তিক বাস্তবায়নের পরিবর্তে বেসলাইন ব্যাপকভাবে উপলব্ধ ওয়েব প্ল্যাটফর্ম বৈশিষ্ট্যগুলি ব্যবহার করুন।
- আপনার স্ক্রিপ্টে অব্যবহৃত কোড খুঁজতে Chrome DevTools-এ কভারেজ টুল ব্যবহার করুন। স্টার্টআপের সময় প্রয়োজনীয় সংস্থানগুলির আকার হ্রাস করে, আপনি নিশ্চিত করতে পারেন যে পৃষ্ঠাগুলি কোড পার্সিং এবং সংকলন করতে কম সময় ব্যয় করে, যা একটি মসৃণ প্রাথমিক ব্যবহারকারীর অভিজ্ঞতা প্রদান করে।
- প্রাথমিক রেন্ডারের জন্য প্রয়োজনীয় নয় এমন কোডের জন্য একটি পৃথক বান্ডেল তৈরি করতে কোড স্প্লিটিং ব্যবহার করুন, তবে পরেও ব্যবহার করা হবে।
- আপনি যদি একটি ট্যাগ ম্যানেজার ব্যবহার করেন, পর্যায়ক্রমে আপনার ট্যাগগুলি অপ্টিমাইজ করুন ৷ আপনার ট্যাগ ম্যানেজারের জাভাস্ক্রিপ্ট পদচিহ্ন কমাতে অব্যবহৃত কোড সহ পুরানো ট্যাগগুলি সরানো যেতে পারে।
3. বড় রেন্ডারিং আপডেট এড়িয়ে চলুন
জাভাস্ক্রিপ্ট এক্সিকিউশন হল একটি জিনিস যা আপনার ওয়েবসাইটের প্রতিক্রিয়াশীলতাকে প্রভাবিত করে। রেন্ডারিং হল এক ধরনের ব্যয়বহুল কাজ-এবং বড় রেন্ডারিং আপডেটের সময়, আপনার ওয়েবসাইট ব্যবহারকারীর ইন্টারঅ্যাকশনে আরও ধীরে ধীরে সাড়া দিতে পারে।
রেন্ডারিং কাজ অপ্টিমাইজ করা একটি সহজবোধ্য প্রক্রিয়া নয়, এবং আপনি কি অর্জন করার চেষ্টা করছেন তার উপর নির্ভর করে। তা সত্ত্বেও, রেন্ডারিং কাজগুলি যাতে দীর্ঘ কাজ হয়ে না যায় তা নিশ্চিত করতে আপনি এখানে কিছু জিনিস করতে পারেন:
- জোরপূর্বক লেআউট এবং লেআউট থ্র্যাশিং এড়াতে আপনার জাভাস্ক্রিপ্ট কোডে DOM রিড এবং লেখে পুনর্গঠন করুন।
- DOM এর আকার ছোট রাখুন । DOM আকার এবং লেআউট কাজের তীব্রতা পারস্পরিক সম্পর্কযুক্ত। যখন রেন্ডারারকে একটি খুব বড় DOM-এর জন্য লেআউট আপডেট করতে হয়, তখন এর লেআউট পুনঃগণনা করার জন্য প্রয়োজনীয় কাজ উল্লেখযোগ্যভাবে বৃদ্ধি পেতে পারে।
- অফ-স্ক্রীন DOM বিষয়বস্তু অলসভাবে রেন্ডার করতে CSS কন্টেনমেন্ট ব্যবহার করুন । এটা সবসময় সহজবোধ্য নয়, কিন্তু জটিল লেআউট সমন্বিত এলাকাগুলোকে আলাদা করে আপনি অপ্রয়োজনীয় লেআউট এবং রেন্ডারিং কাজ এড়াতে পারেন।
সবচেয়ে বড় কন্টেন্টফুল পেইন্ট (LCP)
সবচেয়ে বড় কন্টেন্টফুল পেইন্ট (LCP) হল কোর ওয়েব অত্যাবশ্যক যেটির সাথে ডেভেলপারদের সবচেয়ে বেশি লড়াই করার প্রবণতা রয়েছে— Chrome UX রিপোর্টের 40% সাইট ভাল ব্যবহারকারীর অভিজ্ঞতার জন্য প্রস্তাবিত LCP থ্রেশহোল্ড পূরণ করে না। LCP উন্নত করার সবচেয়ে কার্যকর উপায় হিসেবে Chrome টিম নিম্নলিখিত কৌশলগুলি সুপারিশ করে৷
1. নিশ্চিত করুন যে এলসিপি সংস্থানটি HTML উত্স থেকে আবিষ্কারযোগ্য এবং অগ্রাধিকার দেওয়া হয়েছে৷
ক্রোম টিম ওয়েবে এলসিপি সংক্রান্ত নিম্নলিখিতগুলি লক্ষ্য করেছে:
- এইচটিটিপি আর্কাইভের 2024 ওয়েব অ্যালম্যানাক অনুসারে, 73% মোবাইল পৃষ্ঠাগুলির LCP উপাদান হিসাবে একটি চিত্র রয়েছে৷
- ক্রোম থেকে প্রকৃত-ব্যবহারকারীর ডেটার বিশ্লেষণ দেখায় যে দুর্বল LCP সহ বেশিরভাগ উত্স তাদের p75 LCP সময়ের 10% এরও কম সময় ব্যয় করে LCP ছবি ডাউনলোড করতে ।
- দুর্বল LCP সহ পৃষ্ঠাগুলির মধ্যে, তাদের LCP চিত্রগুলি লোড করতে ক্লায়েন্টের 75তম শতাংশে 1,290 মিলিসেকেন্ড বিলম্বিত হয় - এটি একটি দ্রুত অভিজ্ঞতার জন্য বাজেটের অর্ধেকেরও বেশি৷
- যে পৃষ্ঠাগুলিতে LCP উপাদানটি একটি চিত্র ছিল, সেই সমস্ত চিত্রগুলির 35% এর উত্স URL রয়েছে যা প্রাথমিক HTML প্রতিক্রিয়াতে আবিষ্কার করা যায় নি (যেমন
<img src="...">
বা<link rel="preload" href="...">
), যা ব্রাউজারের প্রিলোড স্ক্যানারকে যত তাড়াতাড়ি সম্ভব সেগুলি আবিষ্কার করার অনুমতি দেবে৷ - ওয়েব অ্যালম্যানাক অনুসারে, 15% যোগ্য পৃষ্ঠাগুলি সংস্থানগুলিকে উচ্চ অগ্রাধিকার দেওয়ার জন্য
fetchpriority
অ্যাট্রিবিউটের সুবিধা গ্রহণ করছে—যেগুলি তুলনামূলকভাবে অল্প প্রচেষ্টায় একটি পৃষ্ঠার LCP উন্নত করতে পারে।
এই পরিসংখ্যানগুলি বলছে যে ডেভেলপারদের টেবিলে এলসিপি চিত্রগুলির জন্য রিসোর্স লোড বিলম্ব এবং রিসোর্স লোডের সময়কাল উভয়ই কমানোর একটি বড় সুযোগ রয়েছে৷
যেখানে রিসোর্স লোড বিলম্ব সমস্যা, এটি মনে রাখা গুরুত্বপূর্ণ যে ভাল LCP অর্জন করতে ইতিমধ্যেই অনেক দেরি হয়ে যেতে পারে যদি ছবিগুলি লোড করা শুরু করার আগে একটি পৃষ্ঠার সম্পূর্ণরূপে CSS বা JavaScript লোড হওয়ার জন্য অপেক্ষা করতে হয়৷ আরও, একটি LCP ইমেজের রিসোর্স লোডের সময়কালকে পুনরায় প্রাধান্য দিয়ে কমানো যেতে পারে যাতে এটি আরও ব্যান্ডউইথ পায় এবং এইভাবে fetchpriority
HTML অ্যাট্রিবিউট ব্যবহার করে আরও দ্রুত লোড হয়।
যদি আপনার LCP উপাদানটি একটি ছবি হয়, তাহলে রিসোর্স লোডের বিলম্ব কমাতে ছবির URLটি HTML প্রতিক্রিয়ায় আবিষ্কারযোগ্য হওয়া উচিত। এটি সম্ভব করার জন্য কিছু টিপস হল:
-
src
বাsrcset
বৈশিষ্ট্য সহ একটি<img>
উপাদান ব্যবহার করে চিত্রটি লোড করুন।data-src
মতো নন-স্ট্যান্ডার্ড অ্যাট্রিবিউট ব্যবহার করবেন না যাতে রেন্ডার করার জন্য জাভাস্ক্রিপ্টের প্রয়োজন হয়, কারণ এটি সবসময় ধীর হবে। পৃষ্ঠাগুলির 7%data-src
পিছনে তাদের LCP চিত্রকে অস্পষ্ট করে। - ক্লায়েন্ট-সাইড রেন্ডারিং (CSR) এর চেয়ে সার্ভার-সাইড রেন্ডারিং (SSR) পছন্দ করুন, কারণ SSR বোঝায় যে সম্পূর্ণ পৃষ্ঠা মার্কআপ (ছবি সহ) HTML উত্সে উপস্থিত রয়েছে৷ CSR সমাধানের জন্য ইমেজ আবিষ্কার করার আগে JavaScript চালানোর প্রয়োজন হয়।
- যদি আপনার ছবিকে একটি বাহ্যিক CSS বা JS ফাইল থেকে উল্লেখ করার প্রয়োজন হয়, তাহলেও আপনি একটি
<link rel="preload">
ট্যাগ ব্যবহার করে এটিকে HTML উৎসে অন্তর্ভুক্ত করতে পারেন। নোট করুন যে ইনলাইন শৈলী দ্বারা উল্লেখ করা ছবিগুলি ব্রাউজারের প্রিলোড স্ক্যানার দ্বারা আবিষ্কৃত হয় না, তাই যদিও সেগুলি HTML উত্সে পাওয়া যায়, তবুও সেগুলির আবিষ্কার অন্যান্য সংস্থানগুলি লোড করার সময় অবরুদ্ধ হতে পারে, তাই প্রিলোডিং এই ক্ষেত্রে সাহায্য করতে পারে৷
আরও, আপনি LCP রিসোর্স তাড়াতাড়ি লোড হয়েছে তা নিশ্চিত করে এবং উচ্চ অগ্রাধিকারে একটি সংস্থানের লোডের সময়কাল সংক্ষিপ্ত করতে পারেন:
- আপনার LCP ছবির
<img>
বা<link rel="preload">
ট্যাগেfetchpriority="high"
অ্যাট্রিবিউট যোগ করুন। এটি ইমেজ রিসোর্সের অগ্রাধিকার বাড়ায় তাই এটি শীঘ্রই লোড করা শুরু করতে পারে। - আপনার LCP চিত্রের
<img>
ট্যাগ থেকেloading="lazy"
বৈশিষ্ট্যটি সরান। এটি ভিউপোর্টে বা তার কাছাকাছি চিত্রটি উপস্থিত হয়েছে তা নিশ্চিত করার কারণে লোড বিলম্ব এড়ায়। - সম্ভব হলে অ-সমালোচনা সংস্থান বিলম্বিত করুন। এই সম্পদগুলিকে আপনার নথির শেষে সরানো, অলস-লোড করা ছবি বা iframes , অথবা JavaScript ব্যবহার করে এগুলিকে অ্যাসিঙ্ক্রোনাসভাবে লোড করা LCP ছবির মতো আরও গুরুত্বপূর্ণ সংস্থানগুলিকে আরও দ্রুত লোড করার পথ পরিষ্কার করতে সাহায্য করবে৷
2. তাত্ক্ষণিক নেভিগেশনের জন্য লক্ষ্য করুন
আদর্শ ব্যবহারকারীর অভিজ্ঞতার জন্য কখনই একটি পৃষ্ঠা লোড হওয়ার জন্য অপেক্ষা করতে হবে না। LCP অপ্টিমাইজেশান যেমন রিসোর্স আবিষ্কারযোগ্যতা এবং অগ্রাধিকার একটি ব্যবহারকারী LCP উপাদান লোড এবং রেন্ডার করার জন্য কতক্ষণ অপেক্ষা করে তা কমাতে কার্যকর—কিন্তু এই বাইটগুলি নেটওয়ার্কে কত দ্রুত লোড হবে এবং একটি পৃষ্ঠায় রেন্ডার হবে তার একটি শারীরিক সীমা রয়েছে৷ ঠিক আছে আপনি সেই সীমাতে পৌঁছানোর আগে, আরও কয়েক মিলিসেকেন্ড শেভ করার জন্য একটি নিষেধমূলকভাবে উচ্চ পরিমাণ প্রচেষ্টা প্রয়োজন। সুতরাং, তাত্ক্ষণিক নেভিগেশন অর্জনের জন্য, আমাদের একটি আমূল ভিন্ন পদ্ধতি গ্রহণ করতে হবে।
ব্যবহারকারী সেখানে নেভিগেট করা শুরু করার আগে তাত্ক্ষণিক নেভিগেশন পৃষ্ঠাটি লোড এবং রেন্ডার করার চেষ্টা করে। এইভাবে, প্রেরেন্ডারড পৃষ্ঠাটি নিকট-শূন্য এলসিপি সহ অবিলম্বে প্রদর্শিত হতে পারে। পুনরুদ্ধার এবং অনুমানগুলি এটি করার দুটি উপায়। যখন কোনও ব্যবহারকারী পূর্বে পরিদর্শন করা পৃষ্ঠায় ফিরে বা ফরোয়ার্ড নেভিগেট করে, তখন এটি একটি ইন-মেমরি ক্যাশে থেকে দ্রুত পুনরুদ্ধার করা যেতে পারে, ব্যবহারকারী ঠিক যেমনটি রেখেছিল ঠিক তেমন উপস্থিত হয়। বিকল্পভাবে, ওয়েব অ্যাপ্লিকেশনগুলি ভবিষ্যদ্বাণী করার চেষ্টা করতে পারে যে কোনও ব্যবহারকারী পরবর্তী কোথায় যাবেন - এবং সঠিক হলে, পরবর্তী পৃষ্ঠাটি ইতিমধ্যে লোড হয়ে গেছে এবং ব্যবহারকারী সেখানে নেভিগেট করার সময়টি রেন্ডার করা হবে।
পূর্বে পরিদর্শন করা পৃষ্ঠাগুলি পুনরুদ্ধার করা ব্যাক/ফরোয়ার্ড ক্যাশে (বিএফসিচে) দ্বারা সম্ভব হয়েছে। এটি ব্যবহার করার জন্য, আপনাকে অবশ্যই নিশ্চিত করতে হবে যে আপনার পৃষ্ঠাগুলি বিএফসিএসি যোগ্যতার মানদণ্ড পূরণ করে। পৃষ্ঠাগুলি কেন বিএফসিএচের জন্য যোগ্য নয় এমন সাধারণ কারণগুলি হ'ল কারণ তারা no-store
ক্যাশে নির্দেশের সাথে পরিবেশন করা হয়েছে বা ইভেন্ট শ্রোতাদের unload
করেছে।
সম্পূর্ণরূপে রেন্ডার করা পৃষ্ঠাগুলি পুনরুদ্ধার করা কেবল লোডিং পারফরম্যান্সই নয়, লেআউট স্থিতিশীলতাও উন্নত করে। আপনি বিএফসিচে সম্পর্কে আরও শিখতে পারেন এবং পৃষ্ঠাগুলি বিএফসিএইসিএইচ বিভাগের জন্য যোগ্য কিনা তা নিশ্চিত করার জন্য সিএলএসের উন্নতির জন্য এটি কতটা কার্যকর।
পরবর্তী পৃষ্ঠাটি প্রিরেন্ডারিং একটি ব্যবহারকারী ভিজিট করে নাটকীয়ভাবে এলসিপি কার্যকারিতা উন্নত করার আরেকটি কার্যকর উপায় এবং এটি অনুমানের বিধিগুলি এপিআই দ্বারা সম্ভব হয়েছে। এই লাভগুলি উপলব্ধি করার জন্য, যদিও সঠিক পৃষ্ঠাগুলি পূর্বনির্ধারিত হয়েছে তা নিশ্চিত করুন। ভুল জল্পনাগুলি সার্ভার এবং ক্লায়েন্ট উভয়কেই সংস্থানগুলি নষ্ট করে, যা পারফরম্যান্সকে আঘাত করতে পারে। সুতরাং পরবর্তী পৃষ্ঠাটি কী হবে সে সম্পর্কে আপনি যত কম আত্মবিশ্বাসী হন, এটি প্রারেন্ডারিংয়ের সাথে আপনার তত বেশি রক্ষণশীল হওয়া উচিত। যখন সন্দেহ হয়, আপনার বিশ্লেষণ ডেটা আপনাকে পরবর্তী দেখার সর্বোচ্চ সম্ভাবনা সহ আরও অধীর আগ্রহে প্রেরেন্ডার পৃষ্ঠাগুলিতে আত্মবিশ্বাস দিতে পারে।
3। টিটিএফবি অনুকূল করতে একটি সিডিএন ব্যবহার করুন
পূর্ববর্তী সুপারিশটি তাত্ক্ষণিক নেভিগেশনগুলিতে মনোনিবেশ করেছিল, যা ব্যবহারকারীদের সর্বোত্তম সম্ভাব্য অভিজ্ঞতা সরবরাহ করে, তবে এমন পরিস্থিতি থাকতে পারে যেখানে বিএফসিএইসিএইচ এবং অনুমানমূলক লোডিং কৌশলগুলি প্রযোজ্য নয়। আপনার সাইটে ক্রস-উত্স লিঙ্ক অনুসরণকারী ব্যবহারকারীকে বিবেচনা করুন যেখানে প্রাথমিক এইচটিএমএল ডকুমেন্টের প্রতিক্রিয়া কার্যকরভাবে এলসিপিকে অবরুদ্ধ করে। ব্রাউজারটি প্রতিক্রিয়াটির প্রথম বাইট না পাওয়া পর্যন্ত কোনও সাবরেসোর্স লোড করা শুরু করতে পারে না। যত তাড়াতাড়ি তা ঘটে, যত তাড়াতাড়ি সমস্ত কিছু ঘটতে শুরু করতে পারে।
এই সময়টি সময় থেকে প্রথম বাইট (টিটিএফবি) হিসাবে পরিচিত। টিটিএফবি হ্রাস করার সর্বোত্তম উপায়গুলি হ'ল:
- আপনার সামগ্রীটি ভৌগোলিকভাবে আপনার ব্যবহারকারীদের কাছাকাছি হিসাবে পরিবেশন করুন।
- সেই বিষয়বস্তু ক্যাশে যাতে এটি অদূর ভবিষ্যতে আবার অনুরোধ করা হলে এটি দ্রুত পরিবেশন করা যায়।
এই দুটি জিনিস করার সর্বোত্তম উপায় হ'ল একটি সিডিএন ব্যবহার করা । সিডিএনগুলি আপনার সংস্থানগুলি বিশ্বজুড়ে সার্ভারগুলিকে প্রান্তে বিতরণ করে, এইভাবে সেই সংস্থানগুলি ব্যবহারকারীদের কাছে তারের উপর দিয়ে ভ্রমণ করতে হবে এমন দূরত্বকে সীমাবদ্ধ করে। সিডিএনগুলিতে সাধারণত সূক্ষ্ম-দানাযুক্ত ক্যাচিং নিয়ন্ত্রণ থাকে যা আপনার সাইটের প্রয়োজনের জন্য টুইট করা যায়।
সিডিএনগুলি এইচটিএমএল ডকুমেন্টগুলিও পরিবেশন করতে এবং ক্যাশে করতে পারে, তবে ওয়েব আলমানাকের মতে, এইচটিএমএল ডকুমেন্টের অনুরোধগুলির কেবলমাত্র 33% সিডিএন থেকে দেওয়া হয়েছিল । এর অর্থ সাইটগুলির জন্য অতিরিক্ত সঞ্চয় উপলব্ধি করার একটি গুরুত্বপূর্ণ সুযোগ রয়েছে।
সিডিএন কনফিগার করার জন্য কিছু টিপস অন্তর্ভুক্ত:
- ক্যাশে স্ট্যাটিক এইচটিএমএল এমনকি অল্প সময়ের জন্য নথি। উদাহরণস্বরূপ, বিষয়বস্তু সর্বদা তাজা হওয়া কি গুরুত্বপূর্ণ? নাকি কয়েক মিনিটের বাসি হতে পারে?
- আপনি আপনার অরিজিন সার্ভারে চলমান ডায়নামিক লজিকটি প্রান্তে স্থানান্তর করতে পারেন কিনা তা অন্বেষণ করুন, যা বেশিরভাগ আধুনিক সিডিএনগুলির বৈশিষ্ট্য।
যে কোনও সময় আপনি সরাসরি প্রান্ত থেকে সামগ্রী পরিবেশন করতে পারেন এবং আপনার অরিজিন সার্ভারে ট্রিপ এড়াতে পারেন তা একটি পারফরম্যান্স জয়। এমনকি এমন ক্ষেত্রে যেখানে আপনাকে পুরো যাত্রাটি উত্সের দিকে যেতে হবে , সিডিএনগুলি সাধারণত এটি আরও দ্রুত করার জন্য অনুকূলিত হয়, তাই এটি কোনওভাবেই জয়।
ক্রমবর্ধমান লেআউট শিফট (CLS)
ক্রমবর্ধমান লেআউট শিফট (সিএলএস) একটি ওয়েব পৃষ্ঠার ভিজ্যুয়াল স্থিতিশীলতার একটি পরিমাপ। যদিও সিএলএস হ'ল মেট্রিক বেশিরভাগ সাইটগুলি ভাল করার ঝোঁক রয়েছে, তাদের প্রায় এক চতুর্থাংশ এখনও প্রস্তাবিত থ্রেশহোল্ডটি পূরণ করে না, তাই অনেক সাইটের জন্য তাদের ব্যবহারকারীর অভিজ্ঞতা উন্নত করার জন্য একটি বড় সুযোগ রয়েছে।
1। পৃষ্ঠা থেকে লোড হওয়া কোনও সামগ্রীতে সুস্পষ্ট আকার সেট করুন
অন্যান্য সামগ্রী লোড হওয়ার পরে বিদ্যমান সামগ্রীগুলি চলার সময় সাধারণত লেআউট শিফটগুলি ঘটে। সিএলএস উন্নত করার প্রাথমিক উপায় হ'ল প্রয়োজনীয় স্থান যতটা সম্ভব আগাম সংরক্ষণ করা।
অপরিশোধিত চিত্রগুলির দ্বারা সৃষ্ট লেআউট শিফটগুলি ঠিক করার সর্বোত্তম উপায় হ'ল স্পষ্টভাবে width
এবং height
বৈশিষ্ট্যগুলি বা তাদের সমতুল্য সিএসএস বৈশিষ্ট্যগুলি সেট করা । 66% পৃষ্ঠাগুলিতে কমপক্ষে একটি অপ্রচলিত চিত্র রয়েছে। একটি সুস্পষ্ট আকার ছাড়াই, এই চিত্রগুলি 0px
এর প্রাথমিক উচ্চতা রয়েছে, যখন এই চিত্রগুলি লোড হয় এবং ব্রাউজারটি তাদের মাত্রাগুলি আবিষ্কার করে তখন লেআউট শিফট হতে পারে। এটি সম্মিলিত ওয়েবের জন্য একটি বিশাল সুযোগের প্রতিনিধিত্ব করে - এবং এই সুযোগের জন্য এই গাইডটিতে প্রস্তাবিত অন্যান্য কিছু সুপারিশের চেয়ে কম প্রচেষ্টা প্রয়োজন।
চিত্রগুলি সিএলএসের একমাত্র অবদানকারী নয়। লেআউট শিফটগুলি অন্যান্য সামগ্রীর কারণে ঘটতে পারে যা সাধারণত তৃতীয় পক্ষের বিজ্ঞাপন বা এম্বেড থাকা ভিডিও সহ পৃষ্ঠাটি রেন্ডার করার পরে লোড হয়। aspect-ratio
সম্পত্তি এখানে সহায়তা করতে পারে। এটি একটি বেসলাইন ব্যাপকভাবে উপলভ্য সিএসএস বৈশিষ্ট্য যা বিকাশকারীদের চিত্রগুলিতে স্পষ্টভাবে একটি দিক অনুপাতের পাশাপাশি অ-চিত্রের উপাদানগুলি সেট করতে দেয়। এটি আপনাকে একটি গতিশীল width
সেট করতে দেয় (উদাহরণস্বরূপ স্ক্রিনের আকারের উপর ভিত্তি করে), এবং ব্রাউজারটি স্বয়ংক্রিয়ভাবে উপযুক্ত উচ্চতা গণনা করতে পারে, এটি মাত্রা সহ চিত্রগুলির জন্য একইভাবে করে।
তবে গতিশীল সামগ্রীর সঠিক আকারটি জানা সর্বদা সম্ভব নয়। এমনকি যদি আপনি সঠিক আকারটি না জানেন তবে আপনি এখনও লেআউট শিফটের তীব্রতা হ্রাস করতে পারেন। খালি উপাদানটির জন্য ব্রাউজারটিকে 0px
এর ডিফল্ট উচ্চতা ব্যবহার করার অনুমতি দেওয়ার চেয়ে একটি বুদ্ধিমান min-height
সেট করা প্রায় সর্বদা ভাল। একটি min-height
ব্যবহার করাও সাধারণত একটি সোজা ফিক্স, কারণ এটি এখনও প্রয়োজনে ধারকটিকে চূড়ান্ত সামগ্রীর উচ্চতায় বাড়তে দেয়-এটি কেবলমাত্র সেই বৃদ্ধির পরিমাণটি একটি আশাবাদী আরও সহনীয় স্তরে হ্রাস করেছে।
2। পৃষ্ঠাগুলি বিএফসিচের জন্য যোগ্য তা নিশ্চিত করুন
এই গাইডের আগে যেমন বলা হয়েছে, ব্যাক/ফরোয়ার্ড ক্যাশে (বিএফসিএএচি) তাত্ক্ষণিকভাবে একটি মেমরি স্ন্যাপশট থেকে ব্রাউজারের ইতিহাসে পূর্বের বা পরে একটি পৃষ্ঠা লোড করে। যদিও বিএফসিএইএইএ একটি উল্লেখযোগ্য ব্রাউজার-স্তরের পারফরম্যান্স অপ্টিমাইজেশন যা এলসিপিকে উন্নত করে, এটি সম্পূর্ণরূপে লেআউট শিফটগুলি সরিয়ে দেয়। প্রকৃতপক্ষে, ২০২২ সালে বিএফসিএচের প্রবর্তন সিএলএসের সবচেয়ে বড় উন্নতির জন্য দায়ী ছিল যা আমরা সেই বছর দেখেছি।
এটি সত্ত্বেও, উল্লেখযোগ্য সংখ্যক ওয়েবসাইট বিএফসিচের জন্য অযোগ্য এবং তাই এই নিখরচায় ওয়েব পারফরম্যান্স জয়ের অনুপস্থিত। যদি না আপনার পৃষ্ঠাটি সংবেদনশীল তথ্য লোড না করে আপনি মেমরি থেকে পুনরুদ্ধার করতে চান না, আপনার পৃষ্ঠাগুলি বিএফসিএসি ব্যবহার করার যোগ্য কিনা তা নিশ্চিত করুন।
সাইটের মালিকদের পৃষ্ঠাগুলি বিএফসিএচের জন্য যোগ্য কিনা তা পরীক্ষা করা উচিত এবং তারা কেন নয় তার কোনও কারণ সমাধান করতে হবে। ক্রোমের ডেভটুলগুলিতে একটি বিএফসিএসি পরীক্ষক রয়েছে এবং আপনি ক্ষেত্রের অযোগ্যতার কারণগুলি সনাক্ত করতে এপিআই পুনরুদ্ধার করা হয়নি এমনও ব্যবহার করতে পারেন।
3। অ্যানিমেশন এবং ট্রানজিশনগুলি এড়িয়ে চলুন যা লেআউট-প্ররোচিত সিএসএস বৈশিষ্ট্যগুলি ব্যবহার করে
লেআউট শিফটের আরেকটি সাধারণ উত্স হ'ল উপাদানগুলি অ্যানিমেটেড হয়। উদাহরণস্বরূপ, কুকি ব্যানার বা অন্যান্য বিজ্ঞপ্তি ব্যানার যা উপরে বা নীচে থেকে স্লাইড হয় প্রায়শই সিএলএসে অবদান রাখে। এটি বিশেষত সমস্যাযুক্ত যখন এই ব্যানারগুলি অন্য সামগ্রীকে পথ থেকে দূরে সরিয়ে দেয়, তবে যখন তারা তা না করে তখনও এনিমেট করা সিএলএসকে প্রভাবিত করতে পারে।
যদিও এইচটিটিপি সংরক্ষণাগার ডেটাগুলি লেআউট শিফটে অ্যানিমেশনগুলি চূড়ান্তভাবে সংযুক্ত করতে পারে না, ডেটা দেখায় যে কোনও সিএসএস সম্পত্তি যা লেআউটকে প্রভাবিত করতে পারে এমন কোনও সিএসএস সম্পত্তি প্রাণবন্ত করে তোলে সেগুলি সামগ্রিকভাবে পৃষ্ঠাগুলির তুলনায় "ভাল" সিএলএসের সম্ভাবনা 15% কম। কিছু বৈশিষ্ট্য অন্যদের চেয়ে খারাপ সিএলএসের সাথে সম্পর্কিত। উদাহরণস্বরূপ, margin
বা border
প্রস্থকে অ্যানিমেটেড পৃষ্ঠাগুলিতে "দরিদ্র" সিএলএস রয়েছে প্রায় দ্বিগুণ হারে যেগুলি সামগ্রিকভাবে পৃষ্ঠাগুলি দরিদ্র হিসাবে মূল্যায়ন করা হয়।
এটি সম্ভবত অবাক হওয়ার মতো নয়, কারণ যে কোনও সময় আপনি কোনও লেআউট-প্ররোচিত সিএসএস সম্পত্তি স্থানান্তর বা অ্যানিমেট করে, এর ফলে লেআউট শিফট হবে। যদি এই লেআউট শিফটগুলি কোনও ব্যবহারকারীর মিথস্ক্রিয়া 500 মিলিসেকেন্ডের মধ্যে না থাকে তবে তারা সিএলএসকে প্রভাবিত করবে।
কিছু বিকাশকারীদের কাছে যা অবাক হতে পারে তা হ'ল এটি এমন ক্ষেত্রেও সত্য যেখানে সাধারণ নথির প্রবাহের বাইরে উপাদানটি নেওয়া হয়। উদাহরণস্বরূপ, একেবারে অবস্থানযুক্ত উপাদানগুলি যা top
বা left
কারণ লেআউট শিফটকে অ্যানিমেট করে, এমনকি যদি তারা অন্য সামগ্রীকে আশেপাশে চাপ না দেয়। তবে, যদি top
বা left
অ্যানিমেট করার পরিবর্তে, আপনি transform:translateX()
বা transform:translateY()
, এটি ব্রাউজারটিকে পৃষ্ঠা বিন্যাস আপডেট করতে পারে না, এইভাবে লেআউট শিফটগুলি এড়িয়ে যায়।
ব্রাউজারের কম্পোজিটর থ্রেডে আপডেট করা যেতে পারে এমন সিএসএস বৈশিষ্ট্যগুলির অ্যানিমেশনকে অগ্রাধিকার দেওয়া দীর্ঘকাল ধরে একটি পারফরম্যান্স সেরা অনুশীলন কারণ এটি জিপিইউতে মূল থ্রেড থেকে কাজ করে। এটি একটি সাধারণ পারফরম্যান্স সেরা অনুশীলন হিসাবে ছাড়াও, এটি সিএলএস উন্নত করতেও সহায়তা করতে পারে।
একটি সাধারণ নিয়ম হিসাবে, কখনই অ্যানিমেট বা ট্রানজিশন সিএসএস বৈশিষ্ট্যগুলি যা ব্রাউজারটিকে পৃষ্ঠা বিন্যাস আপডেট করার প্রয়োজন হয়, যদি না আপনি কোনও ব্যবহারকারীর ট্যাপ বা কী প্রেসের প্রতিক্রিয়া হিসাবে এটি না করেন (যদিও এটি hover
নয় )। যখনই সম্ভব, সিএসএস transform
সম্পত্তি ব্যবহার করে ট্রানজিশন এবং অ্যানিমেশনগুলি পছন্দ করুন।
অ-কমপোজিটেড অ্যানিমেশনস বাতিঘর নিরীক্ষা এড়িয়ে চলুন যখন কোনও পৃষ্ঠা সম্ভাব্য ধীর সিএসএস বৈশিষ্ট্যগুলি অ্যানিমেট করে তখন সতর্ক করে দেয়।
উপসংহার
পৃষ্ঠার পারফরম্যান্স উন্নত করা ভয়ঙ্কর বলে মনে হতে পারে, বিশেষত যে ওয়েব জুড়ে বিবেচনা করার জন্য গাইডেন্সের পর্বত রয়েছে। তবে, সবচেয়ে কার্যকর সেরা অনুশীলনের এই সংক্ষিপ্ত তালিকায় মনোনিবেশ করে আপনি নতুন করে ফোকাস দিয়ে সমস্যার কাছে যেতে পারেন এবং আশা করি আপনার ওয়েবসাইটের মূল ওয়েব ভাইটালগুলির জন্য সুইটি সরিয়ে নিতে পারেন।
আপনি যদি এখানে তালিকাভুক্ত অপ্টিমাইজেশনের বাইরে যেতে চান তবে আরও তথ্যের জন্য এই গাইডগুলি পড়ুন:
পরিশিষ্ট: লগ পরিবর্তন করুন
শীর্ষস্থানীয় সুপারিশগুলি কখন এবং কেন পরিবর্তিত হয়েছে তা ব্যাখ্যা করতে সহায়তা করার জন্য এই দস্তাবেজের বড় পরিবর্তনগুলি এখানে ট্র্যাক করা হবে।
অক্টোবর 2024
2024 আপডেট:
- আইএনপি
- আমরা এই মেট্রিকটি এফআইডি থেকে আইএনপিতে স্যুইচ করেছি একটি মূল ওয়েব ভাইটাল মেট্রিক হিসাবে আইএনপি চালু করার সাথে সাথে এটিকে তালিকার শীর্ষ মেট্রিক করে তুলেছি।
- আমরা দীর্ঘ কাজগুলি ভাঙ্গার অংশ হিসাবে
isInputPending
এপিআই ব্যবহার করার জন্য আমাদের সুপারিশটি বিপরীত করেছি। অপ্টিমাইজ লং টাস্ক নিবন্ধে আমাদের যুক্তি সম্পর্কে আপনি আরও জানতে পারেন।
- এলসিপি
- আমরা আবিষ্কারযোগ্যতা এবং অগ্রাধিকারের সুপারিশগুলিকে একটিতে একত্রিত করেছি।
- তাত্ক্ষণিক নেভিগেশনগুলির জন্য লক্ষ্য রাখতে আমরা একটি নতুন সুপারিশ যুক্ত করেছি।
জানুয়ারী 2023
এটি সুপারিশগুলির প্রাথমিক তালিকা:
- এলসিপি
- এলসিপি সংস্থানটি এইচটিএমএল উত্স থেকে আবিষ্কারযোগ্য তা নিশ্চিত করুন
- এলসিপি সংস্থানকে অগ্রাধিকার দেওয়া হয়েছে তা নিশ্চিত করুন
- ডকুমেন্ট এবং রিসোর্স টিটিএফবি অনুকূল করতে একটি সিডিএন ব্যবহার করুন
- সিএলএস
- পৃষ্ঠা থেকে লোড হওয়া কোনও সামগ্রীতে সুস্পষ্ট আকার সেট করুন
- পৃষ্ঠাগুলি বিএফসিচের জন্য যোগ্য তা নিশ্চিত করুন
- অ্যানিমেশন এবং ট্রানজিশনগুলি এড়িয়ে চলুন যা লেআউট-প্ররোচিত সিএসএস বৈশিষ্ট্যগুলি ব্যবহার করে
- এফআইডি
- এড়ানো বা দীর্ঘ কাজগুলি ব্রেক আপ করুন
- অপ্রয়োজনীয় জাভাস্ক্রিপ্ট এড়িয়ে চলুন
- বড় রেন্ডারিং আপডেটগুলি এড়িয়ে চলুন
আপনি ভিডিও সংক্ষিপ্তসার জন্য এই 2023 গুগল আই/ও উপস্থাপনাও দেখতে পারেন।