আপনার সার্ভার ওভারলোডেড না থাকা সত্ত্বেও যদি আপনার Divi 5 পেজগুলো প্রদর্শিত হতে ৩-৮ সেকেন্ড সময় নেয়, তাহলে সমস্যাটি প্রায়শই কয়েকটি জটিল কারণের সম্মিলিত প্রভাব থেকে আসে: সব জায়গায় অ্যাসেট লোড হওয়া, বারবার অনুরোধ করা এবং থার্ড-পার্টি জাভাস্ক্রিপ্ট দ্বারা রেন্ডারিংয়ে বাধা সৃষ্টি হওয়া।

সমস্যা

এই “বাগ”টি কোনো বিচ্ছিন্ন ত্রুটি নয়, বরং এটি একটি প্যাটার্ন যা আমি প্রায়শই ডিভি ৫ সাইটগুলিতে দেখতে পাই (ওয়ার্ডপ্রেস (৬.৯.৪, পিএইচপি ৮.১+): মডিউল, মার্কেটিং স্ক্রিপ্ট যোগ করার পর অথবা থিম/প্লাগইন আপডেট করার পর ফ্রন্ট-এন্ড ধীর হয়ে যায়। অ্যাডমিন সাইডে ভিজ্যুয়াল বিল্ডারও ধীরগতির হতে পারে, কিন্তু এই পোস্টটি মূলত ফ্রন্ট-এন্ড পারফরম্যান্সের উপর আলোকপাত করে।

যখন আপনি ডিবাগিং চালু করেন, তখন আপনার লগগুলিতে এই ধরনের সংকেত দেখতে পারেন (বাস্তব উদাহরণ):

PHP Warning:  Undefined array key "et_pb_pagebuilder" in /wp-content/themes/Divi/includes/builder/frontend-builder/helpers.php on line 123

PHP Notice:  Function _load_textdomain_just_in_time was called incorrectly. Translation loading for the my-plugin domain was triggered too early. 
This is usually an indicator for some code in the plugin or theme running too early. in /wp-includes/functions.php on line 6121

আর ব্রাউজার (কনসোল) দিকে, সাধারণ লক্ষণগুলো হলো:

[Violation] 'requestAnimationFrame' handler took 120ms
[Violation] Added non-passive event listener to a scroll-blocking 'touchstart' event
Uncaught ReferenceError: jQuery is not defined

যেখানে এটি দেখা যায়:

  • সামনে শেষ পৃষ্ঠাটি ঝিকমিক করে, এলসিপি (LCP) বেশি, ইন্টারঅ্যাক্টিভ হতে অনেক বেশি সময় লাগে, স্ক্রোলিং ঝাঁকুনিপূর্ণ।
  • অ্যাডমিন ধীরগতির বিল্ডার, ধীর সেভ, দীর্ঘ প্রিভিউ (প্রায়শই একই কারণে হয়ে থাকে: অতিরিক্ত অ্যাসেট এবং এজেক্স কল)।
  • ক্রন / এজেক্স কখনও কখনও বারবার কল করার ফলে (হার্টবিট, REST এন্ডপয়েন্ট, অ্যাডমিন-এজ্যাক্স) লোড বেড়ে যায়।

এই গাইডটি কাদের জন্য? যারা কোড যোগ করতে (চাইল্ড থিম বা “mu-plugin”) জানেন, কোয়েরি মনিটর পড়তে জানেন এবং অপটিমাইজেশন চান। সুসঙ্গত ওয়ার্ডপ্রেস 6.9.4+ ব্যতীত Divi 5, Elementor বা Avada-এর কোড বিশ্লেষণ। কোর্স শেষে আপনি জানতে পারবেন কীভাবে সমস্যার মূল কারণ (অ্যাসেট, ডেটাবেস, জাভাস্ক্রিপ্ট) চিহ্নিত করতে হয়, কোডের ৩টি ‘আগে/পরে’ সংশোধন প্রয়োগ করতে হয় এবং এর ফলাফল যাচাই করতে হয়।

দ্রুত সারসংক্ষেপ

  • পরিমাপ করে শুরু করুন কোডে হাত দেওয়ার আগে কোয়েরি মনিটর ও ডেভটুলস (এলসিপি, টিবিটি) ব্যবহার করুন।
  • ডিভি ৫ ধীরগতির হয়ে যাচ্ছে বিশেষ করে যখন আপনি সব জায়গায় CSS/JS লোড করেন (এমনকি যেসব পেজে এর প্রয়োজন নেই সেখানেও)।
  • দ্বিতীয় সর্বাধিক সাধারণ কারণ পুনরাবৃত্তিমূলক ডেটাবেস কোয়েরি (অপশন/অটোলোড, মেটা কোয়েরি, পুনঃগণনাকারী শর্টকোড)।
  • তৃতীয় কারণ তৃতীয় পক্ষের স্ক্রিপ্ট (চ্যাট, অ্যানালিটিক্স, এ/বি টেস্টিং) যা মূল থ্রেডকে ব্লক করে।
  • ৩৫টি প্যাচ শর্তসাপেক্ষ অনুসন্ধান, ট্রানজিয়েন্ট ও বাতিলকরণ, নির্দিষ্ট ডিফার/ডিলে (বিল্ডার স্ক্রিপ্ট স্পর্শ না করেই)।

লক্ষণগুলো

  • শুধুমাত্র নির্দিষ্ট কিছু URL-এ পেজটি ধীরগতির। (যেমন, অত্যন্ত মডুলার ডিভি হোমপেজ), কিন্তু সাধারণ আর্টিকেলগুলো ঠিক আছে।
  • এলসিপি > ৩ সেকেন্ড মোবাইলে, এমনকি পেজ ক্যাশে চালু থাকলেও।
  • হাই টিবিটি (মোট আটকে থাকার সময়): পেজটি ধীরে সাড়া দেয়, স্ক্রোল করতে আটকে যায়, ক্লিক উপেক্ষা করা হয়।
  • অনুরোধের সংখ্যা খুব বেশি (২০০+), যা প্রায়শই থার্ড-পার্টি স্ক্রিপ্ট, ফন্ট ও মডিউলের কারণে হয়ে থাকে।
  • এইচটিএমএল দ্রুত ডেলিভারি হলেও রেন্ডারিং ধীর। সার্ভার ঠিক আছে, কিন্তু ব্রাউজার তার সময় JS-এ ব্যয় করছে।
  • স্নিপেট যোগ করার পরে ত্রুটি অতিরিক্ত আগ্রাসী 'ডিফার'-এর পর সাদা স্ক্রিন (মারাত্মক) অথবা পৃষ্ঠা ভেঙে যাওয়া।
  • ক্যাশে/মিনিফিকেশন দ্বন্দ্ব CSS প্রয়োগ করা হয়নি, JS-এ “jQuery সংজ্ঞায়িত নয়” বার্তা দেখাচ্ছে, Divi মডিউলগুলো আর অ্যানিমেট হচ্ছে না।

দ্রুত রোগ নির্ণয় চার্ট

লক্ষণ সম্ভাব্য কারণ প্রতিপাদন সমাধান
TTFB ঠিক আছে (< 300ms) কিন্তু LCP/TBT দুর্বল JS স্তর + অনেক বেশি অ্যাসেট ডেভটুলস > পারফরম্যান্স / লাইটহাউস সমাধান ১ + সমাধান ৩
ক্যাশ থাকা সত্ত্বেও উচ্চ TTFB (> 800ms)। ক্যাশে ভুলভাবে কনফিগার করা হয়েছে / পৃষ্ঠাগুলি ক্যাশে করা হয়নি / অতিরিক্ত অনুরোধ হেডার ক্যাশে + কোয়েরি মনিটর (কোয়েরিসমূহ) সমাধান ২ + সার্ভার ক্যাশে পরীক্ষা করুন
শুধুমাত্র সংযুক্ত থাকলেই পেজগুলো ধীরগতির হয়। অ্যাডমিন বার, বিল্ডার, “লগ-ইন করা” স্ক্রিপ্ট ছদ্মবেশী + সংযুক্ত পরীক্ষা শর্তসাপেক্ষ কোয়েরি + অপ্রয়োজনীয় অ্যাডমিন মডিউল নিষ্ক্রিয় করুন
ধীরগতির ডিভি বিল্ডার, গ্রহণযোগ্য সম্মুখভাগ ভারী অ্যাডমিন প্লাগইন, হার্টবিট, এন্ডপয়েন্ট কোয়েরি মনিটর (এজ্যাক্স), নেটওয়ার্ক হার্টবিট সীমিত করুন, অ্যাডমিন প্লাগইনগুলি পরিষ্কার করুন
“defer JS” প্রয়োগের পর অ্যানিমেশনগুলো ভেঙে গেছে। jQuery/Divi স্ক্রিপ্ট স্থগিত করুন কনসোল “jQuery সংজ্ঞায়িত নয়” সমাধান ৩ (বর্জনীয় তালিকা)

এমনটা কেন ঘটে?

সহজ কথায় বলতে গেলে: Divi 5 তখনই ভালোভাবে কাজ করে যখন এটি শুধু পেজের প্রয়োজনীয় জিনিসগুলোই লোড করে। কিন্তু যেই মুহূর্তে আপনি এর সাথে মডিউল, ইফেক্ট, ফন্ট, থার্ড-পার্টি স্ক্রিপ্ট এবং 'অল-ইন-ওয়ান' প্লাগইন যুক্ত করেন, তখনই আপনাকে CSS/JS এবং ব্রাউজার-সাইড প্রসেসিংয়ের ক্ষেত্রে এর মূল্য দিতে হয়।

প্রযুক্তিগত বিবরণ: তিনটি প্রতিবন্ধকতা প্রধান।

  • বৈশ্বিক সম্পদ আপনার থিম/চাইল্ড অথবা আপনার প্লাগইনগুলির এনকিউ করা ফাইলগুলি সব পৃষ্ঠাগুলির মাধ্যমে wp_enqueue_scriptsকখনো কখনো নিঃশর্তভাবে। যদিও ডিভি ৫ তার নিজস্ব পাইপলাইন অপ্টিমাইজ করে, আপনার সংযোজনগুলো এই অপ্টিমাইজেশনগুলোকে এড়িয়ে যায়।
  • বারবার জিজ্ঞাসা এবং গণনা শর্টকোড, ফিল্টার the_content এবং মডিউল যা তৈরি করে WP_Query বা get_posts() প্রতিটি ভিজিটের সাথে। একটি উচ্চ-ট্র্যাফিক সাইটে, পেজ ক্যাশে আংশিকভাবে আড়াল করে রাখে... যতক্ষণ না আপনার কাছে আনক্যাশ করা পেজ (শপিং কার্ট, মেম্বার এরিয়া) বা এর অনেকগুলো ভ্যারিয়েশন (কুকিজ, জিওলোকেশন, এ/বি টেস্টিং) থাকে।
  • জাভাস্ক্রিপ্ট ব্লকিং ট্র্যাকিং স্ক্রিপ্ট, চ্যাট, হিটম্যাপ, স্লাইডার ইত্যাদি মূল থ্রেডের কাজের চাপ বাড়ায়। এর ফলে ব্রাউজার রেন্ডারিংয়ে দেরি করে এবং কোর ওয়েব ভাইটালস স্কোর মারাত্মকভাবে কমে যায়।

সবচেয়ে সাধারণ থেকে বিরলতম কারণগুলো (ডিভি ৫-এ) নিচে দেওয়া হলো:

  1. চাইল্ড থিমে অথবা একটি স্নিপেটস প্লাগইনে গ্লোবাল এনকিউ (CSS/JS)।
  2. অতিরিক্ত আগ্রাসী মিনিফিকেশন/কনক্যাট (প্লাগইন ক্যাশে) যা ডিপেন্ডেন্সিগুলোর ক্রম পরিবর্তন করে দেয় (jQuery পিছিয়ে পড়ে, ইনলাইন স্ক্রিপ্টগুলো লাইব্রেরির আগে চলে আসে)।
  3. পুনরাবৃত্ত ডিবি কোয়েরি + অতিরিক্ত বড় অটোলোড অপশন।
  4. ডিভিতে (কোড মডিউলে) অথবা হেডার/ফুটার প্লাগইনের মাধ্যমে ‘ম্যানুয়ালি’ যোগ করা থার্ড-পার্টি স্ক্রিপ্ট।
  5. পিএইচপি ও মেমোরির অসামঞ্জস্যতা (সাইটগুলো এখনও পিএইচপি ৮.০-তে রয়েছে অথবা মেমোরি লিমিট খুব কম), যা বিরল হলেও বাস্তব।

শুরু করার পূর্বশর্তসমূহ

  • রক্ষা সম্পূর্ণ (ফাইল + ডেটাবেস)। আপনি যদি প্রোডাকশনে থাকেন, তাহলে একটি ক্লোন/স্টেজিং করুন।
  • সংস্করণ ওয়ার্ডপ্রেস ৬.৯.৪, পিএইচপি ৮.১+ (আপনার হোস্টিং প্রোভাইডারের সুবিধা থাকলে ৮.২/৮.৩ হলে ভালো), হালনাগাদ ডিভি ৫।
  • টুলস :

একটি ব্যবহারযোগ্য ডিবাগিং পরিবেশ সক্রিয় করুন (সম্ভব হলে স্টেজিং-এ):

define( 'WP_DEBUG', true );
define( 'WP_DEBUG_LOG', true );
define( 'WP_DEBUG_DISPLAY', false ); // Évitez d'afficher les notices en front
define( 'SCRIPT_DEBUG', false ); // Laissez à false en prod; true uniquement pour diagnostiquer

দরকারি দাপ্তরিক নথি: ওয়ার্ডপ্রেস ডিবাগ করুন.


সমাধান ১: অপ্রয়োজনীয়ভাবে লোড হওয়া CSS/JS (শর্তসাপেক্ষ কোয়েরি) পরিষ্কার করুন।

আমি প্রায়শই ডিভি সাইটগুলিতে এই সমস্যার সম্মুখীন হয়েছি, যেখানে চাইল্ড থিম সর্বত্র “site.css” + “site.js” লোড করে এবং এই ফাইলগুলিতে এমন ভারী লাইব্রেরি (swiper, gsap, fancybox) অন্তর্ভুক্ত থাকে যা ২টি পেজে ব্যবহৃত হয়।

লক্ষণ

  • ডেভটুলস > নেটওয়ার্ক: এমন পেজে লোড হওয়া “কাস্টম” CSS/JS ফাইলগুলো শনাক্ত করুন যেখানে সেগুলোর প্রয়োজন নেই (যেমন, একটি সাধারণ আর্টিকেল)।
  • কোয়েরি মনিটর > স্ক্রিপ্ট/স্টাইল: হ্যান্ডেল (নাম) এবং উৎস (চাইল্ড থিম, প্লাগইন) শনাক্ত করুন।

পূর্বে (ত্রুটিপূর্ণ): গ্লোবাল এনকিউ

সাধারণ উদাহরণ functions.php চাইল্ড থিম থেকে (অথবা একটি স্নিপেটস প্লাগইন থেকে):

<?php
add_action( 'wp_enqueue_scripts', function () {
	// Mauvaise pratique : chargé sur toutes les pages, même quand inutile
	wp_enqueue_style(
		'child-site',
		get_stylesheet_directory_uri() . '/assets/site.css',
		array(),
		'1.0.0'
	);

	wp_enqueue_script(
		'child-site',
		get_stylesheet_directory_uri() . '/assets/site.js',
		array( 'jquery' ),
		'1.0.0',
		true
	);
}, 10 );

পরে (সংশোধিত): শুধুমাত্র প্রয়োজন হলেই লোড করুন

উদ্দেশ্য: আপনার অ্যাসেটগুলো শুধুমাত্র সেইসব পেজেই লোড করা যেখানে সেগুলোর প্রয়োজন। ডিভিতে প্রায়শই এমন কিছু পেজ থাকে যেগুলো আইডি, স্লাগ, টেমপ্লেট অথবা কোনো শর্টকোড/মডিউলের উপস্থিতি দ্বারা শনাক্ত করা যায়।

<?php
/**
 * Plugin conseillé : placez ce code dans un mu-plugin pour éviter les pertes lors d'une mise à jour.
 * Fichier : wp-content/mu-plugins/divi-perf-enqueues.php
 */
add_action( 'wp_enqueue_scripts', function () {
	// Ne jamais casser l'admin
	if ( is_admin() ) {
		return;
	}

	$should_load = false;

	// 1) Exemple : ne charger que sur la page "Accueil" (à adapter)
	if ( is_front_page() ) {
		$should_load = true;
	}

	// 2) Exemple : ne charger que sur un template spécifique
	if ( is_page_template( 'templates/landing.php' ) ) {
		$should_load = true;
	}

	// 3) Exemple : ne charger que sur une page précise (ID)
	if ( is_page( 123 ) ) {
		$should_load = true;
	}

	if ( ! $should_load ) {
		return;
	}

	// Versionnez avec filemtime() pour éviter les caches fantômes après déploiement
	$css_path = get_stylesheet_directory() . '/assets/site.css';
	$js_path  = get_stylesheet_directory() . '/assets/site.js';

	wp_enqueue_style(
		'child-site',
		get_stylesheet_directory_uri() . '/assets/site.css',
		array(),
		file_exists( $css_path ) ? (string) filemtime( $css_path ) : null
	);

	wp_enqueue_script(
		'child-site',
		get_stylesheet_directory_uri() . '/assets/site.js',
		array(),
		file_exists( $js_path ) ? (string) filemtime( $js_path ) : null,
		true
	);
}, 20 );

এটি আসলে কেন গতি বাড়ায়?

  • কম বাইট ডাউনলোডযোগ্য, বিশেষ করে মোবাইলে।
  • পার্স করার জন্য কম CSS। (ব্রাউজার স্টাইলগুলো পুনঃগণনা করতে সময় ব্যয় করে)।
  • কার্যকর করতে কম JS প্রয়োজন।সুতরাং, TBT কমে গেছে।

ব্লক-ভিত্তিক ব্যাখ্যা

  • is_admin() এডিটর/বিল্ডার ভেঙে যাওয়া এড়ানো হয়।
  • $should_load যুক্তিকে কেন্দ্রীভূত করে। আমি এমন অনেক সাইট দেখেছি যেখানে ১০টি রয়েছে। if বিক্ষিপ্ত, রক্ষণাবেক্ষণ করা অসম্ভব।
  • filemtime() এর ফলে “আমি সমস্যাটি সমাধান করেছি কিন্তু ক্যাশে পুরোনো সংস্করণটি দেখাচ্ছে”—এই ফাঁদটি এড়ানো যায়।
  • নির্ভরশীলতা অপসারণ jquery আপনার প্রয়োজন না থাকলে: Divi-তে প্রায়শই jQuery উপস্থিত থাকে, কিন্তু অপ্রয়োজনে এটির প্রয়োজন হয় না।

কার্যকরী বিকল্প: নির্দিষ্ট কিছু পৃষ্ঠায় একটি প্লাগইন ডিসকিউ করা।

অনেক ধীরগতির কারণ হলো এমন সব প্লাগইন যা সব জায়গায় লোড হয় (যেমন ফর্ম, স্লাইডার, ম্যাপ)। হ্যান্ডেলগুলো জানা থাকলে আপনি সেগুলোকে সুন্দরভাবে আনলোড করতে পারেন।

<?php
add_action( 'wp_enqueue_scripts', function () {
	// Exemple : sur les articles, enlever un script inutile (handle à adapter)
	if ( is_single() ) {
		wp_dequeue_script( 'some-plugin-frontend' );
		wp_dequeue_style( 'some-plugin-frontend' );
	}
}, 100 ); // Priorité haute pour passer après les enqueues du plugin

দাপ্তরিক তথ্যসূত্র: wp_dequeue_script ().


সমাধান ২: পুনরাবৃত্তিমূলক অনুরোধ পরিহার করুন (ট্রানজিয়েন্ট + অবজেক্ট ক্যাশে)

Divi 5-এ, 'মার্কেটিং' পেজগুলিতে প্রায়শই ডায়নামিক মডিউল (ফিচার্ড আর্টিকেল, প্রোডাক্ট, টেস্টিমোনিয়াল) থাকে। সমস্যাটি হলো: একটি শর্টকোড বা কাস্টম মডিউল প্রতিবার প্রদর্শিত হওয়ার সময় ডাটাবেস কোয়েরি করে, এবং কখনও কখনও একটি পেজে একাধিকবারও করতে পারে।

লক্ষণ

  • কোয়েরি মনিটর > কোয়েরি: পুনরাবৃত্ত কোয়েরি শনাক্ত করুন (একই SELECT, একই meta_key)।
  • এছাড়াও “Caller” চেক করুন: তাহলেই দ্রুত দেখতে পাবেন এটি কোনো শর্টকোড থেকে আসছে কিনা। the_content অথবা একটি গ্লোবাল হুক।

পূর্বে (ত্রুটিপূর্ণ): শর্টকোড যা প্রতিটি হিটে অনুরোধ করত

বাস্তব উদাহরণ: একটি কোড ডিভি মডিউলে অন্তর্ভুক্ত করা “সর্বশেষ আর্টিকেল” শর্টকোড।

<?php
add_shortcode( 'latest_posts_cards', function ( $atts ) {
	$atts = shortcode_atts(
		array(
			'count' => 6,
		),
		$atts,
		'latest_posts_cards'
	);

	$q = new WP_Query(
		array(
			'post_type'      => 'post',
			'posts_per_page' => (int) $atts['count'],
			'no_found_rows'  => true,
		)
	);

	if ( ! $q->have_posts() ) {
		return '';
	}

	ob_start();
	echo '<div class="cards">';
	while ( $q->have_posts() ) {
		$q->the_post();
		echo '<a class="card" href="' . esc_url( get_permalink() ) . '">' . esc_html( get_the_title() ) . '</a>';
	}
	echo '</div>';
	wp_reset_postdata();

	return (string) ob_get_clean();
} );

সমস্যাসমূহ:

  • প্রতিটি ডিসপ্লে = একটি কোয়েরি (অথবা মেটা/টার্মস যোগ করলে একাধিক)।
  • শর্টকোডটি একাধিক পৃষ্ঠা জুড়ে থাকলে লোড হতে প্রচণ্ড চাপ পড়ে।
  • আপনি যদি কোনো প্রকাশ্য পৃষ্ঠায় (সদস্য, শপিং কার্ট) থাকেন, তবে প্রতিবার পরিদর্শনের জন্য আপনাকে মূল্য পরিশোধ করতে হবে।

পরে (সংশোধিত): ক্ষণস্থায়ী + যথাযথ অবৈধকরণ

চূড়ান্ত HTML কোডটি ক্যাশ করা থাকে এবং কোনো আর্টিকেল প্রকাশিত বা আপডেট করা হলে তা বাতিল হয়ে যায়। এটি সহজ, নির্ভরযোগ্য এবং ওয়ার্ডপ্রেস ৬.৯.৪-এর সাথে সামঞ্জস্যপূর্ণ।

<?php
/**
 * Cache HTML d'un shortcode avec transient.
 * Compatible PHP 8.1+.
 */

function bpcab_latest_posts_cards_render( int $count ): string {
	$q = new WP_Query(
		array(
			'post_type'              => 'post',
			'posts_per_page'         => $count,
			'no_found_rows'          => true,
			'ignore_sticky_posts'    => true,
			'update_post_meta_cache' => false,
			'update_post_term_cache' => false,
		)
	);

	if ( ! $q->have_posts() ) {
		return '';
	}

	ob_start();
	echo '<div class="cards">';
	while ( $q->have_posts() ) {
		$q->the_post();
		echo '<a class="card" href="' . esc_url( get_permalink() ) . '">' . esc_html( get_the_title() ) . '</a>';
	}
	echo '</div>';
	wp_reset_postdata();

	return (string) ob_get_clean();
}

add_shortcode( 'latest_posts_cards', function ( $atts ) {
	$atts = shortcode_atts(
		array(
			'count' => 6,
		),
		$atts,
		'latest_posts_cards'
	);

	$count = max( 1, min( 20, (int) $atts['count'] ) );

	// Clé de cache dépendante du paramètre
	$cache_key = 'bpcab_latest_posts_cards_' . $count;

	$cached = get_transient( $cache_key );
	if ( is_string( $cached ) && $cached !== '' ) {
		return $cached;
	}

	$html = bpcab_latest_posts_cards_render( $count );

	// TTL raisonnable : 15 minutes (à adapter)
	set_transient( $cache_key, $html, 15 * MINUTE_IN_SECONDS );

	return $html;
} );

/**
 * Invalidation : quand un post est publié/mis à jour/supprimé.
 * On supprime plusieurs variantes (count 1..20) pour rester simple.
 */
function bpcab_latest_posts_cards_purge_cache(): void {
	for ( $i = 1; $i <= 20; $i++ ) {
		delete_transient( 'bpcab_latest_posts_cards_' . $i );
	}
}

add_action( 'save_post_post', function ( $post_id, $post, $update ) {
	// Évitez les autosaves/révisions
	if ( wp_is_post_autosave( $post_id ) || wp_is_post_revision( $post_id ) ) {
		return;
	}
	bpcab_latest_posts_cards_purge_cache();
}, 10, 3 );

add_action( 'deleted_post', function ( $post_id ) {
	if ( get_post_type( $post_id ) === 'post' ) {
		bpcab_latest_posts_cards_purge_cache();
	}
}, 10, 1 );

কেন এটি সমস্যাটির সমাধান করে?

  • আপনি বেশিরভাগ হিটের ক্ষেত্রেই রিকোয়েস্টগুলো মুছে ফেলছেন (বিশেষ করে Redis/Memcached অবজেক্ট ক্যাশিংয়ের ক্ষেত্রে)।
  • আপনি HTML পুনঃগণনা এড়িয়ে যান the_contentযেটি ডিভি-র একটি জনপ্রিয় জায়গা (অনেক ফিল্টার রয়েছে)।
  • আপনি মেটা/টার্মস ক্যাশে সীমিত করেন এর মাধ্যমে update_post_meta_cache et update_post_term_cache যখন আপনার এটির প্রয়োজন নেই।

কর্মক্ষমতা এবং সামঞ্জস্য রেটিং

  • ট্রানজিয়েন্টগুলো অবজেক্ট ক্যাশ ছাড়া ডাটাবেসে এবং Redis/Memcached ব্যবহার করে মেমরিতে সংরক্ষিত হয়। দুটোই ঠিক আছে, কিন্তু পারসিস্টেন্ট অবজেক্ট ক্যাশ ব্যবহার করলে পারফরম্যান্সে উল্লেখযোগ্যভাবে ভালো ফল পাওয়া যায়।
  • সরকারি নথি: এপিআই ট্রানজিয়েন্টস.
  • ইনভ্যালিডেশন ছাড়া “১ দিন”-এর TTL সেট করা থেকে বিরত থাকুন: এর ফলে আপনি পুরোনো কন্টেন্ট দেখতে পাবেন এবং আতঙ্কে আপনাকে “সমস্ত ক্যাশ ক্লিয়ার” করতে হবে।

সমাধান ৩: Divi 5-এর কার্যকারিতা না কমিয়ে থার্ড-পার্টি জাভাস্ক্রিপ্ট বিলম্বিত করুন (defer/delay)।

চিরাচরিত পরিস্থিতিটি হলো: আপনি একটি ক্যাশিং প্লাগইনে “JS Delay” অপশনটি চালু করলে, Divi (বা কোনো মডিউল) ভেঙে যায়। এরপর আপনি অপশনটি বন্ধ করে দিলে, একটি বিশাল সুবিধা থেকে বঞ্চিত হন। সঠিক পন্থাটি হলো... শুধুমাত্র তৃতীয়টি উল্লেখ করুন, এবং বাদ দেওয়া গুরুত্বপূর্ণ স্ক্রিপ্টসমূহ (jQuery, থিম/বিল্ডার স্ক্রিপ্ট, নির্ভরশীল ইনলাইন স্ক্রিপ্ট)।

লক্ষণ

  • ডেভটুলস > পারফরম্যান্স: দীর্ঘ সময় ধরে চলা টাস্ক এবং যে JS কোডটি বাধা সৃষ্টি করছে তা শনাক্ত করুন।
  • ডেভটুলস > নেটওয়ার্ক: তৃতীয় পক্ষের ডোমেইন শনাক্ত করুন (যেমন, connect.facebook.net, www.googletagmanager.com, বিড়াল, ইত্যাদি)।

পূর্বে (ত্রুটিপূর্ণ): সমস্ত স্ক্রিপ্টে গ্লোবাল ডিফার।

একটি বিপজ্জনক অংশ যা আমি এখনও প্রচলিত হতে দেখি (প্রায়শই একটি পুরানো টিউটোরিয়াল থেকে অনুলিপি করা):

<?php
add_filter( 'script_loader_tag', function ( $tag ) {
	// Mauvaise pratique : defer sur absolument tout
	return str_replace( '<script ', '<script defer ', $tag );
} );

সাধারণ ফলাফল: Uncaught ReferenceError: jQuery is not definedডিভি মডিউল ইনিশিয়ালাইজ হতে ব্যর্থ হওয়া, স্লাইডার জমে যাওয়া।

পরে (সংশোধিত): লক্ষ্যযুক্ত স্থগিতকরণ + বর্জন তালিকা

আমরা আবেদন করি defer আমরা শুধুমাত্র অ-গুরুত্বপূর্ণ স্ক্রিপ্টগুলো বাদ দিই, এবং সংবেদনশীল হ্যান্ডেলগুলো স্পষ্টভাবে বাদ দিই। মূল বিষয়টি হলো: আমরা Divi-র অভ্যন্তরীণ হ্যান্ডেলগুলো অনুমান করি না (কারণ সেগুলো পরিবর্তিত হতে পারে)। এর পরিবর্তে, আমরা ডিপেন্ডেন্সি এবং 'ফ্যামিলি' (jQuery + গুরুত্বপূর্ণ হিসেবে চিহ্নিত স্ক্রিপ্ট) অনুসারে বাদ দিই, এবং এটিকে আপনার নিয়ন্ত্রিত থার্ড-পার্টির (আপনার স্ক্রিপ্ট + কয়েকটি প্লাগইন) মধ্যে সীমাবদ্ধ রাখি।

<?php
/**
 * Defer ciblé des scripts front.
 * Objectif : réduire le JS bloquant sans casser Divi 5.
 *
 * Placez ce code en mu-plugin et testez sur staging.
 */
add_filter( 'script_loader_tag', function ( $tag, $handle, $src ) {

	if ( is_admin() ) {
		return $tag;
	}

	// 1) Exclusions strictes : ne touchez pas à jQuery ni aux scripts "core"
	$excluded_handles = array(
		'jquery',
		'jquery-core',
		'jquery-migrate',
	);

	if ( in_array( $handle, $excluded_handles, true ) ) {
		return $tag;
	}

	// 2) Exclure les scripts chargés dans l'en-tête (souvent critiques)
	// Si un script n'est pas en footer, on évite d'y toucher par défaut.
	// (On ne peut pas toujours détecter "in_footer" ici de façon fiable selon les plugins.)
	// Stratégie : n'appliquer defer qu'à une allowlist.
	$allowed_handles = array(
		'child-site',              // Votre JS custom
		'contact-form-7',          // Exemple : à adapter
		'wpforms',                 // Exemple : à adapter
		'gtm4wp',                  // Exemple : à adapter
	);

	if ( ! in_array( $handle, $allowed_handles, true ) ) {
		return $tag;
	}

	// 3) N'ajoutez pas defer si déjà présent
	if ( str_contains( $tag, ' defer' ) ) {
		return $tag;
	}

	// Ajout de defer
	return str_replace( '<script ', '<script defer ', $tag );

}, 10, 3 );

“বিলম্ব” বিকল্প (আরও কঠোর): শুধুমাত্র চিহ্নিত তৃতীয় পক্ষের স্ক্রিপ্টগুলির জন্য

যখন আসল সমস্যাটি একটি লিপি তৃতীয় পক্ষ (চ্যাট/হিটম্যাপ), defer সেটা সবসময় যথেষ্ট নয়। ইন্টারঅ্যাকশনের পর আপনি সেগুলোর লোডিং বিলম্বিত করতে পারেন। এতে ঝুঁকি বেশি (ইউএক্স, ট্র্যাকিং), কিন্তু এটি কার্যকর।

ন্যূনতম উদাহরণ: একটি থার্ড-পার্টি স্ক্রিপ্ট শুধুমাত্র প্রথম স্ক্রল/ক্লিকের পরেই যুক্ত করা হয়। আমি মূলত চ্যাট উইজেটগুলোর জন্য এটি করে থাকি।

<?php
/**
 * Injecte un loader JS "delay" en footer.
 * Ajustez la liste de scripts tiers selon vos besoins.
 */
add_action( 'wp_footer', function () {

	if ( is_admin() ) {
		return;
	}

	?>
<script>
(function() {
	"use strict";

	var loaded = false;

	function loadThirdParty() {
		if (loaded) return;
		loaded = true;

		// Exemple : charger un script tiers (URL à adapter)
		var s = document.createElement("script");
		s.src = "https://example-cdn.invalid/chat-widget.js";
		s.async = true;
		document.head.appendChild(s);
	}

	// Déclencheurs : interaction utilisateur
	window.addEventListener("scroll", loadThirdParty, { passive: true, once: true });
	window.addEventListener("click", loadThirdParty, { passive: true, once: true });
	window.addEventListener("keydown", loadThirdParty, { passive: true, once: true });

	// Fallback : charge au bout de 8s si aucune interaction
	window.setTimeout(loadThirdParty, 8000);
})();
</script>
	<?php
}, 100 );

ঝুঁকি খুব বেশি দেরি করলে আপনি 'পেজভিউ' অ্যানালিটিক্স ইভেন্টগুলো হারাতে পারেন। আপনার টুল (GA4, Matomo, Pixel) দিয়ে পরীক্ষা করুন এবং আপনার সিদ্ধান্তটি নথিভুক্ত করুন।

স্ক্রিপ্ট লোডিং সংক্রান্ত অফিসিয়াল ডকুমেন্টেশন: wp_enqueue_script () এবং ফিল্টার স্ক্রিপ্ট_লোডার_ট্যাগ.


সংশোধন-পরবর্তী চেক

  • পরিমাপের আগে/পরে :
    • বাতিঘর (ভ্রাম্যমাণ): এলসিপি, টিবিটি, সিএলএস।
    • ডেভটুলস > নেটওয়ার্ক: অনুরোধের সংখ্যা, মোট স্থানান্তরিত ওজন।
    • কোয়েরি মনিটর: ডিবি কোয়েরির সংখ্যা, মোট সময়, ধীরগতির কোয়েরি।
  • ডিভি ৫ কার্যকরী পরীক্ষা :
    • মেনু, অ্যাঙ্কর, স্লাইডার, অ্যাকর্ডিয়ন, ফর্ম।
    • ডাইনামিক মডিউলযুক্ত পেজ (ব্লগ, শপ, টেস্টিমোনিয়াল)।
  • সংযুক্ত বনাম বিচ্ছিন্ন পরীক্ষা করুন লগ ইন করা থাকলে ডিভি এবং কিছু প্লাগইন দ্রুত লোড হয়।
  • আচ্ছাদন আপনার প্লাগইন ক্যাশে, সার্ভার ক্যাশে (যদি থাকে) এবং ব্রাউজার ক্যাশে পরিষ্কার করুন। আমি দেখেছি, লোকেরা একটি পুরোনো ক্যাশ করা রিসোর্স পরীক্ষা করার কারণে কোনো রিগ্রেশনকে "ভ্যালিডেট" করে।

যদি তাতেও কাজ না হয়

  1. একটি সংঘাতকে বিচ্ছিন্ন করুন হেলথ চেক (ট্রাবলশুটিং মোড)-এর মাধ্যমে: Divi/Divi Builder ছাড়া বাকি সব প্লাগইন নিষ্ক্রিয় করুন, তারপর এক এক করে সেগুলো পুনরায় সক্রিয় করুন।
  2. পিএইচপি ত্রুটি পরীক্ষা করুন মধ্যে wp-content/debug.logঅতিরিক্ত নোটিশের ঢল সবকিছু ধীর করে দিতে পারে (বিশেষ করে যদি লগটি ধীরগতির ডিস্কে থাকে)।
  3. পিএইচপি মেমরি নিয়ন্ত্রণ আপনি সীমার কাছাকাছি চলে গেলে, সোয়াপিং/জিসি-এর সম্মুখীন হবেন। যাচাই করুন। WP_MEMORY_LIMIT এবং হোস্টিং প্রদানকারীর পক্ষের সীমাবদ্ধতা।
  4. অটোলোড বিকল্পগুলি দেখুন যখন autoload এটি বিশাল আকার ধারণ করে; প্রতিটি কোয়েরি অতিরিক্ত ডেটা লোড করে। কোয়েরি মনিটর সাহায্য করতে পারে, অন্যথায়, ডিবি ইন্সপেকশন (অ্যাডভান্সড) প্রয়োজন।
  5. সাময়িকভাবে মিনিফিকেশন/কনক্যাট নিষ্ক্রিয় করুন (ক্যাশ প্লাগইন): যদি সাইটটি আবার স্থিতিশীল হয়ে যায়, তাহলে সমস্যাটি স্ক্রিপ্টের ক্রমের কারণে হচ্ছে। Divi/jQuery হ্যান্ডেলগুলো বাদ দিয়ে এটি পুনরায় সক্রিয় করুন।
  6. ব্রাউজার কনসোল একটিমাত্র JS ত্রুটি মডিউলগুলোর ইনিশিয়ালাইজেশন আটকে দিতে পারে (যা একটি লুপ চলা স্ক্রিপ্টের ক্ষেত্রে সাইটটিকে “ধীরগতির” করে তোলে)।
  7. CDN ছাড়া পরীক্ষা (অস্থায়ীভাবে): ভুলভাবে কনফিগার করা সিডিএন লেটেন্সি এবং ক্যাশে মিসের কারণ হতে পারে।
  8. পুনর্লিখন অ্যাসেটগুলিতে 404 ত্রুটি থাকলে, পারমালিঙ্কগুলি পুনরায় তৈরি করুন (রিরাইট) এবং সার্ভারের নিয়মগুলি পরীক্ষা করুন।

প্রয়োজনীয় WP-CLI কমান্ডসমূহ (যদি আপনার অ্যাক্সেস থাকে)

# Vérifier l'environnement
wp core version
wp php version
wp plugin list --status=active
wp theme list

# Vider certains caches (selon votre stack)
wp cache flush

# Repérer des options autoload (avancé, à manipuler avec prudence)
wp db query "SELECT SUM(LENGTH(option_value)) AS autoload_bytes FROM wp_options WHERE autoload='yes';"

WP-CLI: অফিসিয়াল ডকুমেন্টেশন.

সাধারণ ফাঁদ এবং ভুলগুলি

লক্ষণ সম্ভাব্য কারণ প্রস্তাবিত সমাধান
স্নিপেটটি যোগ করার পর সাদা স্ক্রিন। কোড ভুল জায়গায় কপি করা হয়েছে / সেমিকোলন নেই স্টেজিং-এ পরীক্ষা করুন, সক্রিয় করুন WP_DEBUG_LOGসিনট্যাক্স সংশোধন করুন
jQuery is not defined jQuery-তে ডিফার প্রয়োগ করা হলে অথবা মিনিফিকেশনের কারণে স্ক্রিপ্টের ক্রম ভেঙে গেলে বাদ দিন jquery/jquery-coreকনক্যাট নিষ্ক্রিয় করুন, পুনরায় পরীক্ষা করুন
কোড স্নিপেটটি “কাজ করে না” ক্যাশে পেজ/সিডিএন পুরোনো সংস্করণটি পরিবেশন করে। সংস্করণ সহ filemtime()প্লাগইন ক্যাশে + সিডিএন পরিষ্কার করুন
স্থানীয়ভাবে অপ্টিমাইজেশন ঠিক আছে, কিন্তু প্রোডাকশনে ধীর। তৃতীয় পক্ষের স্ক্রিপ্ট, নেটওয়ার্ক লেটেন্সি, অনুপস্থিত অবজেক্ট ক্যাশে প্রোডাকশন প্রোফাইলে (কোনো প্রভাব না ফেলে), সম্ভব হলে Redis/Memcached সক্রিয় করুন।
হুকগুলি কার্যকর করা হয়নি নিষ্ক্রিয় প্লাগইনে স্নিপেট স্থাপন করা হয়েছে / একটি স্নিপেট প্লাগইনের সাথে দ্বন্দ্ব পছন্দ করুন একটি mu-pluginলোডিং অর্ডার পরীক্ষা করুন
CSS/JS লোড হয়নি খারাপ get_stylesheet_directory_uri() vs get_template_directory_uri() শিশুদের থিমের জন্য ব্যবহার করুন get_stylesheet_*
এলিমেন্টর/আভাদাতে রিগ্রেশন একটি শেয়ার করা বা অতিরিক্ত গ্লোবাল হ্যান্ডেল আনকিউ করা প্রতিটি পৃষ্ঠা/টেমপ্লেটের জন্য শর্তাবলী প্রয়োগ করুন, 'সাইটব্যাপী' নিয়ম পরিহার করুন।

যে ভুলগুলো আমি প্রায়শই দেখি (এবং যেগুলো ব্যয়বহুল)

  • একটি কোড স্নিপেট কপি করুন “সবকিছু স্থগিত করুন” একটি ফোরামে পাওয়া তথ্য: এটা আজ হোক বা কাল হোক, নষ্ট হয়ে যায়।
  • কোডটি ভুল ফাইলে রাখুন (যাত্রা। functions.php (Divi প্যারেন্ট থিমের)। পরবর্তী আপডেটে সবকিছু ভেঙে যাবে।
  • অগ্রাধিকার ভুলে যাওয়া : জন্য wp_dequeue_scriptপ্রায়শই উচ্চ অগ্রাধিকারের প্রয়োজন হয় (যেমন, ১০০)।
  • বিভ্রান্তিকর ক্রিয়া এবং ফিল্টার : script_loader_tag এটি একটি ফিল্টার, কোনো অ্যাকশন নয়।
  • সরাসরি উৎপাদনে পরীক্ষা করা হচ্ছে রোলব্যাক ছাড়া। একটি Divi সাইটে, একটি JS ত্রুটি সমস্ত পৃষ্ঠাকে প্রভাবিত করতে পারে।

রূপভেদ / বিকল্প

নো-কোড পদ্ধতি (প্লাগইন)

  • যদি আপনি ডিভির এক্সক্লুশনগুলো কনফিগার করার জন্য সময় দেন, তবে হ্যান্ডেলের (মিনিফিকেশন, জেএস ডিলে) মাধ্যমে এক্সক্লুশনগুলো পরিচালনা করে এমন একটি ক্যাশিং/পারফরম্যান্স প্লাগইনই যথেষ্ট হতে পারে। এর সমস্যাটি হলো "ওয়ান-ক্লিক অপটিমাইজেশন": ডিভিতে এটি প্রায়শই কাজ করে না।
  • ডেটাবেসের জন্য, একটি পারসিস্টেন্ট অবজেক্ট ক্যাশে (Redis/Memcached) নন-ক্যাশড পেজগুলোর তুলনায় সামগ্রিক সুবিধা প্রদান করে।

আরও উন্নত পদ্ধতি (ডেভেলপারদের)

  • পিএইচপি প্রোফাইলার (APM): Sentry, New Relic, Datadog। এর মাধ্যমে আপনি সাথে সাথেই বুঝতে পারবেন যে ধীরগতির কারণটি DB, HTTP API, নাকি CPU।
  • কিছু শর্টকোড প্রতিস্থাপন করুন স্ট্যাটিক ব্লক বা প্যাটার্নের মাধ্যমে, যখন প্রতিটি হিটে কন্টেন্ট পুনরায় গণনা করার প্রয়োজন হয় না।
  • কাস্টম JS স্লাইসিং প্রতিটি পেজ টাইপের জন্য একটি করে বান্ডেল, যা শর্তসাপেক্ষে লোড করা হয় (সমাধান ১), এর পরিবর্তে site.js অখণ্ড।

ভবিষ্যতে এই সমস্যাটি এড়িয়ে চলুন

  • একটি সহজ নিয়ম গ্রহণ করুন অযথাযথ কাস্টম "গ্লোবাল" CSS/JS ব্যবহার করা যাবে না। পেজ/টেমপ্লেট অথবা ফিচার অনুযায়ী লোড করুন।
  • যা দামী তা লুকিয়ে ফেলুন শর্টকোড এবং কোয়েরিতে অবশ্যই একটি ক্যাশিং স্ট্র্যাটেজি (ট্রানজিয়েন্ট + ইনভ্যালিডেশন) থাকতে হবে।
  • অদৃশ্য আসক্তি পরিহার করুন আপনার জাভাস্ক্রিপ্ট যদি jQuery-এর উপর নির্ভরশীল হয়, তবে তা স্পষ্টভাবে ঘোষণা করুন। সম্ভব হলে, ক্রমগত সীমাবদ্ধতা কমাতে ভ্যানিলা জাভাস্ক্রিপ্টে স্থানান্তরিত হন।
  • তৃতীয় পক্ষের স্ক্রিপ্ট নিরীক্ষণ করুন প্রতিটি "ফ্রি" উইজেট খরচ বাড়িয়ে দেয়। আমি এমন পেজও দেখেছি যেখানে ১২টি মার্কেটিং ট্যাগ রয়েছে; ওয়ার্ডপ্রেস অপটিমাইজেশনের কোনো পরিমাণই এর ক্ষতিপূরণ করতে পারে না।
  • একটি অভ্যন্তরীণ পরিবর্তন লগ রাখুন যখন আপনি “delay JS” সক্রিয় করবেন, তখন বর্জনীয় বিষয়গুলো খেয়াল রাখুন, অন্যথায় পরবর্তী ঘটনায় আপনার ঘণ্টার পর ঘণ্টা সময় নষ্ট হবে।

দরকারী ওয়ার্ডপ্রেস রেফারেন্স:

সম্পদ

প্রায়শই জিজ্ঞাসিত প্রশ্ন

ডিভি ৫ কি ব্লক থিমের চেয়ে আবশ্যিকভাবেই ধীরগতির?

না। সাধারণ পেজের ক্ষেত্রে ডিভি ৫ যথেষ্ট হতে পারে। পার্থক্যটা মূলত বোঝা যায় অত্যন্ত মডিউলার পেজ এবং থার্ড-পার্টি স্ক্রিপ্টের সংখ্যার ওপর। আসল বিষয় হলো, আপনি প্রতিটি পেজে কী লোড এবং এক্সিকিউট করছেন।

কোডটি কোথায় রাখতে হবে: চাইল্ড থিম, প্লাগইন, নাকি mu-plugin?

"ইনফ্রাস্ট্রাকচার" অপ্টিমাইজেশনের (এনকিউ, ডিফারাল, ক্যাশে) জন্য, আমি একটি সুপারিশ করি mu-pluginDivi আপডেট বা থিম পরিবর্তনের সময় আপনি ক্ষতি এড়াতে পারেন।

এটি কি এলিমেন্টর বা আভাডার সাথে সামঞ্জস্যপূর্ণ?

হ্যাঁ, যদি আপনি প্রতি পৃষ্ঠা/টেমপ্লেটের জন্য শর্ত এবং হ্যান্ডেলের একটি অনুমোদিত তালিকা মেনে চলেন। বিপদটি হলো "defer all" কোড বা অন্য কিছু। wp_dequeue_* এটি অতিরিক্ত বৈশ্বিক, যা অন্য কোনো নির্মাতার প্রয়োজনীয় সম্পদ সরিয়ে ফেলতে পারে।

কোয়েরি মনিটরে কোয়েরির সংখ্যা কম দেখালেও পেজটি কেন ধীর থাকে?

কারণ বাধাটি সম্ভবত ব্রাউজারের দিকে (JS/CSS) অথবা নেটওয়ার্কের দিকে (থার্ড-পার্টি স্ক্রিপ্ট) রয়েছে। TBT, দীর্ঘ টাস্ক এবং স্থানান্তরিত মোট ওজন পরীক্ষা করুন।

পেজ ক্যাশে কি যথেষ্ট নয়?

পেজ ক্যাশিং মূলত TTFB-তে সাহায্য করে। যদি আপনার LCP/TBT খারাপ হয়, তবে এর কারণ প্রায়শই অতিরিক্ত ভার্বোস বা ত্রুটিপূর্ণভাবে লোড হওয়া CSS/JS। এই কারণেই কন্ডিশনাল কোয়েরি এবং টার্গেটেড ডিফারিং-এর গুরুত্ব রয়েছে।

আমার কি OPcache চালু করা উচিত?

হ্যাঁ, যদি আপনার হোস্টিং প্রোভাইডার অনুমতি দেয়। OPcache পিএইচপি (PHP) সিপিইউ (CPU) ব্যবহার উল্লেখযোগ্যভাবে কমিয়ে দেয়। সূত্র: পিএইচপি ওপক্যাশ.

আপনি কীভাবে জানবেন কোন হ্যান্ডেলগুলোকে ডিফার থেকে বাদ দিতে হবে?

বাদ দিয়ে শুরু করুন jquery, jquery-coreএরপর, কাজ করতে গিয়ে যে স্ক্রিপ্টগুলো ভেঙে যায়, সেগুলো যোগ করুন। সঠিক হ্যান্ডেলগুলো দেখতে কোয়েরি মনিটর (স্ক্রিপ্টস ট্যাব) ব্যবহার করুন।

এই ক্ষণস্থায়ী পরিবর্তনটি কি পুরোনো কন্টেন্টের সাথে কোনো সমস্যা সৃষ্টি করবে?

যদি আপনি আপডেটের সময় যথাযথভাবে বাতিল করেন (যেমন, save_postবাতিলকরণ ছাড়া, হ্যাঁ, আপনার বিষয়বস্তু অসামঞ্জস্যপূর্ণ হয়ে পড়বে।

“delay JS” কি SEO-এর জন্য ক্ষতিকর?

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

আমি শুধু ইন্টারনেটে সংযুক্ত থাকলেই গতি কমে যাওয়ার সমস্যা অনুভব করি, এটা কি স্বাভাবিক?

প্রায়শই হ্যাঁ: অ্যাডমিন বার, এডিটিং স্ক্রিপ্ট, এবং প্লাগইন যা 'লগ-ইন' থাকা অ্যাসেট লোড করে। ভিজিটরের অভিজ্ঞতা পরিমাপ করতে সর্বদা প্রাইভেট ব্রাউজিং মোডে পরীক্ষা করুন।