سلام خدمت همه دوستان عزیز و خواننده های این مقاله - در این مقاله قصد دارم تا به بررسی علت اصلی کندی وردپرس بعد از نصب افزونه ها را بپردازیم . پس با من همراه باشید
تا به حال صد ها مقاله راجب افزایش سرعت وردپرس خواندم و گاهی هم نوشتم!
ولی چیزی که در همه این مقالات شاهد هستیم ، اینه که صرفا معرفی یک افزونه کش و کاهش حجم عکس ها پیشنهاد میشه ، ولی در کل هر مسئله ای راهکاری داره! که برای یافتن راهکار اساسی باید با ساختار وردپرس آشنا بشیم
خب لطفا عکس پایین با دقت نگاه کنید...
به جرئت میتونم بگم ما قوی تر از تام مک فارلین که از اول وردپرس برنامه نویسش بوده در مباحث هسته ای وردپرس نداریم و واقعا از آقای سلطانی نشان عزیز برای معرفی این شخص متشکرم.
خب عکس بالا چی میگه؟
هر نرم افزاری در دنیای تکنولوژی یک چرخه حیات داره. «چرخه حیات چیه؟» سوالی بجایی بود ، در واقع چرخه حیات کل بخشی هست که نرم افزار از زمان شروع اولین درخواست به سرور تا پایان و نمایش درخواست به کاربر طی میکنه.
ما با چرخه حیات میتونیم بفهمیم که دقیقا نرم افزار داخلش چه خبره؟ و اصولا پشت این الماس زیبا چی خوابیده
هزاران بار شنیدم که اساتید مختلف گفتن ، اصولی نوشتن نرم افزار گاها باعث میشه بجای هزاران رک با یک سرور هم کار جمع بشه ، حتی شنیدم که میگن اسنپ با گو لنگ روی یک سرور داره جواب میده چون اصولی نوشته شده ولی اسنپ فود با لاراول و همش دارن سرور اضافه میکنن البته خب فرق گولنگ و لاراول خیلیه!
الا ای حال بریم سراغ بررسی چرخه حیات وردپرس
خب طبق عکس بالا وردپرس چرخه حیاتش از سه بخش اصلی تشکیل میشه که عبارتند از:
۱ - درخواست های فرانت اند (سمت کاربر)
۲ - درخواست های ادمین ( سمت مدیر)
۳ - درخواست های ایجکس (درخواست هایی مثل ثبت یک فرم بدون رفرش صفحه و ...)
پس بازم خوبه که وردپرس اومده حداقل درخواست ها رو از هم تفکیک کرده و اکشنی که روی admin اتفاق میفته با اکشنی که روی فرانت اتفاق میفته مشترکه ولی قطعا هر دو یک سری اکشن مشترک هم دارن. ??
خب اول از فرانت شروع میکنیم!
هر درخواستی که از سمت کاربر وارد وردپرس میشه یعنی لود یک صفحه پست یا صفحات مختلف در وردپرس توسط کاربر در وهله اول به فایل index.php میره :)
محتویات فایل index.php فایل wp-blog-header.php را فراخوانی میکنه اون فایل هم به فایل wp-load.php وارد میشه و بعد هم اطلاعات دیتابیس از wp-config.php میگیره ، بعد از اون تنظیمات اصلی وردپرس که کاربر تنظیم کرده مثل ادرس سایت و بخش هایی مثل سفارشی سازی و حتی تنظیمات پلاگین ها را از wp-setting.php میگیره
خب مهمترین بخش در وردپرس همون فایل wp-setting.php هست اونه خیلی کار طول میده چون تمام اکشن های اصلی وردپرس فراخوانی میکنه
خب همونطوری که میبینید دارم تصویری با تفکیک میذارم که بتونیم با هم بررسی کنیم.
این فایل wp-setting.php در واقع مادر فایل های وردپرس هست که مونطور که میبینید اکشن های:
muplugins_loaded - plugins_loaded - setup_theme - after_setup_theme - init - wp_loaded
و همچنین اینکه این یوزری که وارد شده دقیقا کیه هم اینجا تعریف میشه.
خیلی جالبه ، البته باید بگم که شاید باورتون نشه ولی من همیشه دوست داشتم برم کل هسته وردپرس بخونم تک تک تا بفهمم ولی اینگار تام مک فارلین خیلی به ما توی این قضیه کمک کرده و همگام با نوشتن این مقاله خودمم دارم یاد میگیرم البته خب تجربه ۷ ۸ ساله وردپرسی من هم کمک میکنه.
خب این اکشن هایی که میبینید اکثر بدبختی ما رو به دنبال دارن
اگر وردپرس یک جعبه فرض کنید و پلاگین ها رو یک بسته که قراره داخل این جعبه قرار بگیرن ، قطعا تعداد بسته هایی که توی اون جعبه میخواهید قرار بدید محدوده! و بعد از اون دیگه از جعبه خارج میشه و حتی در جعبه هم بسته نمیشه ، در واقع هر پلاگین شامل کلی اکشن و هوک های وردپرس هست که میاد و هی میگی من یک بستم اینو بذار داخل جعبه مثلا wp_loaded یا مثلا پلاگین هایی که فعال هستن لیستشون تک تک میاد میگه من پلاگین فلانم اینم جعبم بذار داخل muplugins_loaded یا plugins_loaded که mu مخفف اکشن های سایت های مولتی سایت (وردپرس شبکه) هست.
اکشن بعدی که داریم setup_theme و after_setup_theme هست که معمولا داخل همه قالب های وردپرس این اکشن صدا زده شده و گفته که بعد از اینکه پلاگین ها لود شدن این تنظیمات برای قالب قرار بده که میتونه این تنظیمات شامل اینکه قالب از تصویر شاخص پشتیبانی میکنه؟ از پست فرمت ها از متاتگ ها و خیلی چیزای دیگه داخل این اکشن میتونه قرار بگیره
و مهمترین اکشن که خیلی از برنامه نویسان وردپرس متاسفانه بهش دقت نمیکنید و خیلی اشتباه از این اکشن استفاده میکنن که مثل آتش میمونه اونم wp_loaded و یا init هست که init زودتر از wp_loaded اجرا میشه
میشه گفت که آخرین اکشن هم wp_loaded هست ، حالا چرا میگم مثل آتش عمل میکنه بخاطر اینکه وردپرس همه چی لود کرده و همه کاراش تموم شده تازه اقای پلاگین نویس بعد از این همه فشاری که اومده میاد یک بار سنگین با این اکشن به وردپرس اضافه میکنه و باعث میشه کاربر با تاخیر لود وردپرس تجربه کنه
این از بخش فرانت درخواست ها که قطعا اساتید باید بیان با کامنت ها کمک کنند و نظر بدن تا ما هم بیشتر یاد بگیریم ?
بخش بعدی بخش ادمین هست که میخواهم توی قسمت دوم این مقاله بعد از یکم تحقیقات بیشتر منتشر کنم. ❤️?? دوستان متخصص حمایت کنید با نظراتتون و اگر نکته ای هست خوشحال میشم به من هم یاد بدید. موفق و پیروز باشید
ادامه دارد ...