کاهش مصرف منابع وردپرس؛ راهنمای کاهش مصرف CPU و RAM

وردپرس به عنوان محبوب ترین سیستم مدیریت محتوا در جهان محسوب می شود که احتیاج به دانش برنامه نویسی را برای راه اندازی یک سایت شرکتی٬ فروشگاهی٬ خبری٬ آموزشی٬ خدماتی و … را به صفر رسانده هست.
نصب و مدیریت وردپرس بسیار ساده می باشد و تنوع زیاد قالب و افزونه ها کمک می کند با شخصی سازی های خیلی ساده بدون کدنویسی به سادگی در آن پیاده سازی شود. شما در وردپرس برای هر قابلیتی که نیاز دارید می توانید از یک افزونه استفاده کنید.
وردپرس برای پروژه های کوچک تا نسبتا بزرگ به سادگی مورد استفاده قرار می گیرد و امروزه اکثر کسانی که برای نخستین بار می خواهند تجربه داشتن یک سایت را پیاده کنند در قدم اول سراغ وردپرس می روند.
وردپرس در کنار تمام مزیت های خوبی که برای راه اندازی سریع یک وب سایت فراهم کرده است٬ چالش هایی را هم دارد برای مثال مصرف بالای منابع سرور در صورت بهینه نبودن سایت یکی از مواردی هست که کاربران زیادی ممکن است در زمان راه اندازی و مدیریت سایت های وردپرسی با آن مواجه شوند.
یک سایت وردپرسی که برای هر قابلیت یک افزونه نصب می کند و مجموع افزونه های نصب شده آن هر روز بیشتر می شود یا سراغ قالبی رفته است که تعداد درخواست های بالا به سرور ارسال می کند و به اصطلاح سنگین می باشد و در کنار این دو مورد دیتابیس آن هم بهینه نیست و از سیستم کش مناسبی هم برخوردار نیست ممکن است مصرف منابع بسیار زیادی در RAM و CPU سرور داشته باشد و منابع سرور را به شدت درگیر کند.
وقتی منابع هاست درگیر می شود فقط نباید به این فکر کرد که قرار است با ارتقای هاست و پرداخت هزینه بیشتر مشکل را حل کرد! مصرف منابع بالای می تواند سرعت سایت را کاهش دهد و در پیک بازدید سایت مخصوصا برای سایت های فروشگاهی٬ تجربه کاربری تلخی را برای بازدیدکنندگان ایجاد کند که به شکل مستقیم باعث کاهش فروش٬ ترک سایت و عدم بازگشت مجدد کاربر به سایت شما خواهد شد.
در شرایط شدید مصرف منابع بالا خطاهایی نظیر خطاهای 503 و 504 یا حتی از دسترس خارج شدن سایت به دفعات بالا رخ خواهد داد.
اگر علت این خطا ها را از شرکت های هاستینگ بپرسید در اولین قدم به شما می گویند که مصرف سایت شما بالاست! و نیاز به هاست قدرتمند تر دارید ولی آيا همیشه ارتقا راهکار مناسبی برای سایت های پرمصرف می باشد؟ آيا ارتقا باعث می شود دیگر درگیری منابع رخ ندهد؟ ارتقا جلوی خطاها و مشکلات احتمالی را می گیرد؟
پاسخ به این سوال ها بله می باشد! اما نه آنگونه که تصور می کنید! در واقع وقتی شما هاست را ارتقا می دهید و منابع پردازشی بیشتری در اختیار هاست قرار می دهید تا حدی صورت مسئله را پاک می کنید! چون شما مشکل را به صورت ریشه ای حل نکردید و هیچ تلاشی برای بهینه سازی و رفع مشکل نداشتید و صرفا با پرداخت هزینه بیشتر منابع بیشتری در اختیار گرفته اید که بعد از مدتی همین منابع هم با افزایش بازدید و ورودی بالاتر کاربران به سقف مجاز خواهد رسید.
ما در این مقاله قصد داریم مهم ترین روش هایی که باعث کاهش مصرف منابع در سایت های وردپرسی می شود را به صورت عملی بررسی کتیم.
چرا سایت وردپرسی منابع زیادی مصرف می کند؟
اگر بخواهیم به شکل فنی تر بررسی کنیم که چرا مصرف بالای منابع در سایت های وردپرسی رخ می دهد باید بگوییم این مصرف بالا زمانی رخ می دهد که پردازش های مختلف سایت به شکل بهینه مدیریت نشوند و هر بار که کاربر یک صفحه را باز می کند وردپرس درخواست های زیادی را به دیتابیس برای دریافت اطلاعات ارسال کند یا کدهای PHP زیادی را در سطح سرور اجرا کند که در نهایت بتواند صفحه را به کاربر نمایش دهد.
اگر تعداد این پردازش ها زیاد باشد فشار بیشتری به Ram و Cpu وارد می شود و اجرای Query های سنگین به دیتابیس هم سبب می شود علاوه بر مصرف بالا خود دیتابیس سرور هم تحت فشار قرار بگیرد و نتواند به درخواست ها به شکل صحیح پاسخ دهد.
درخواست های متعدد AJAX ٬ کرون جاب هایی که بازه اجرای زمانی کوتاه دارند٬ پردازش های پس زمینه٬ عدم استفاده از کش مناسب و … می تواند مصرف منابع را چندین برابر کند.
اگر سایت های فروشگاهی را بررسی کنیم خواهیم دید که این موضوع از اهمیت بالاتری هم برخوردار است چون بخش هایی مانند سبد خرید٬ موجودی محصولات٬ سفارش ها و اطلاعات کاربران به صورت لحظه ای در حال تغییر٬ پردازش و بروزرسانی می باشد.
ربات ها٬ کراول های موتورهای جستجو و حتی درخواست های مخرب مانند حملات بروت فورس نیز بدون اینکه افزایش واقعی در تعداد کاربران مشاهده شود٬ منابع هاست را درگیر کند و خیلی از کاربران فکر می کنند چون ورودی بالا نرفته است پس نباید افزایش منابعی در هاست خود را شاهده باشند.
همچنین استفاده از نسخه های قدیمی PHP، تنظیمات نامناسب سرور و فعال بودن قابلیت های غیرضروری وردپرس می تواند حجم پردازش ها را افزایش دهد.
در نتیجه برای پیدا کردن دلیل اصلی مصرف بالا، باید عملکرد سایت، دیتابیس، درخواست ها و پردازش های سمت سرور به صورت دقیق بررسی شوند زیرا همیشه یک افزونه یا یک عامل مشخص مسئول مصرف بالای منابع نیست.
راهکار های کاهش مصرف سایت های وردپرسی:
در ادامه به مواردی که باعث می شود مصرف منابع کاهش پیدا کند را خدمت شما توضیح خواهیم داد.
1- افزونه های اضافی را حذف کنید:
اولین قدمی که در بحث مصرف بالای منابع توسط سایت های وردپرسی باید مورد بررسی و توجه قرار بگیرد٬ افزونه های نصب شده روی سایت می باشند.
هر افزونه فعال می تواند بخشی از منابع سرور را درگیر کند٬ زیرا ممکن است کدهای PHP اجرا کند٬ Query های مختلف به دیتابیس ارسال کند٬ کران جاب بسازد٬ درخواست های Ajax را از سمت سرور به تعداد بالا شکل دهد و یا فایل های Css و JavaScript بیشتری در صفحات بارگذاری کند.
این مشکل زمانی شکل بحرانی به خود می گیرد که یک مدیر سایت برای هر قابلیتی شروع به نصب افزونه می کند و تمام ویژگی و امکاناتی که در سایت خود نیاز دارد را با نصب افزونه می خواهد پوشش دهد! برای مثال ممکن است یک سایت به طور همزمان افزونه های مختلفی برای آمار بازدید، امنیت، بکاپ، تغییر صفحه ورود، مدیریت ریدایرکت، بهینه سازی تصاویر، کش، فرم تماس، اسلایدر و شبکه های اجتماعی داشته باشد.
خیلی از این افزونه های نصب شده را می توان با به سادگی با چند خط کد به سایت اضافه کرد تا نیاز به نصب افزونه نباشد! برای مثال می توان در زمان آپلود تصاویر آن ها را بهینه سازی کرد و حجم را کاهش داد و از فرمت های توصیه شده مانند Webp استفاده کرد تا نیاز نباشد با نصب افزونه بهینه ساز تصاویر آن را جبران کرد.
یا با مواردی که برای امن سازی وردپرس وجود دارد٬ وردپرس را امن کرد تا الزاما نیاز به افزونه های امنیتی سنگین نباشد.
البته تعداد زیاد افزونه ها به تنهایی نشانه سنگین بودن سایت نیست. ممکن است یک سایت با 30 افزونه بهینه عملکرد بهتری نسبت به سایتی با ۱۰ افزونه سنگین و غیراستاندارد داشته باشد. بنابراین کیفیت کدنویسی افزونه، تعداد پردازش های پس زمینه و میزان ارتباط آن با دیتابیس اهمیت بیشتری دارد.
بهتر است به صورت دوره ای لیست افزونه ها را بررسی کنید و افزونه های بلااستفاده٬ تکراری یا دارای قابلیت مشابه را حذف کنید. اگر چند افزونه در سایت شما کاری تقریبا مشابه را انجام می دهد بهتر است یک گزینه مناسب را نگه دارید و بقیه را غیرفعال کنید.
همچنین اگر مصرف منابع شما بدون دلیل طی روز های گذشته بالا رفته بررسی کنید در چند روز اخیر افزونه جدیدی نصب یا بروزرسانی نشده باشد چون یکی از علت های اصلی نصب افزونه جدید یا بروزرسانی هایی هست که ممکن است مشکل ایجاد کنند.
نکته: فقط غیرفعال کردن افزونه کافی نیست. اگر مطمئن هستید افزونه ای دیگر مورد نیاز سایت نیست، بهتر است آن را کاملا حذف کنید تا علاوه بر کاهش فایل های اضافی، ریسک های امنیتی ناشی از باقی ماندن افزونه های قدیمی نیز کمتر شود.
راهکار عملی بررسی کندی افزونه ها:
برای بررسی اینکه کدام افزونه باعث کندی شدید سایت شما می شود می توانید از آموزش بررسی کندی افزونه های وردپرس با Code Profiler استفاده کنید.
و برای غیرفعال کردن افزونه ها در شرایطی که امکان دسترسی به سایت نیست وارد کنترل پنل هاست خود شوید و سپس در مسیر نصبی وردپرس خود که اگر روی دامنه اصلی هست پوشه public_html می باشد وارد پوشه wp-content و سپس پوشه plugins شوید و سپس افزونه های نصبی را مشاهده خواهید کرد.
با تغییر نام هر افزونه می توانید آن ها را غیرفعال کنید.
این روش برای زمان هایی کاربرد دارد که سایت دیگر بخاطر مصرف بالای منابع در دسترس نیست یا بعد یک بروزرسانی دسترسی به پیشخوان وردپرس میسر نمی باشد.
2- از یک قالب سبک استفاده کنید:
مورد بعدی که در سرعت یک سایت تاثیر بسیار زیادی دارد و منابع را می تواند خیلی بهینه یا خیلی پرمصرف استفاده کند قالب می باشد.
بعضی از قالب ها به صورت پیش فرض امکانات زیادی مانند اسلایدر٬ صفحه ساز٬ افکت های گرافیکی٬ فونت های متعدد و ابزارهای جانبی زیادی را به همراه خود دارند.
حتی اگر از همه این قابلیت ها استفاده نکنید، ممکن است بخشی از فایل ها و پردازش های مربوط به آن ها همچنان در صفحات سایت بارگذاری شوند و فشار بیشتری به سرور و مرورگر کاربر وارد کنند.
یک قالب سنگین می تواند باعث افزایش درخواست های HTTP، بیشتر شدن فایل های CSS و JavaScript، اجرای Query های اضافی، بزرگ شدن DOM صفحه و افزایش پردازشهای PHP شود.
هنگام انتخاب قالب بهتر است فقط ظاهر آن را در نظر نگیرید و مواردی مانند حجم صفحات، تعداد درخواست ها، نحوه بارگذاری فایل ها و سازگاری آن با سیستم های کش را نیز بررسی کنید.
همچنین بهتر است از قالب هایی که برای اجرای قابلیت های اصلی خود به تعداد زیادی افزونه جانبی وابسته هستند دوری کنید زیرا این وابستگی می تواند هم مصرف منابع و هم پیچیدگی نگهداری سایت را افزایش دهد.
راهکار عملی برای بررسی سنگین بودن قالب:
برای بررسی عملکرد قالب، ابتدا یکی از صفحات اصلی سایت را با ابزار هایی مانند PageSpeed Insights یا GTmetrix تست کنید و مواردی مانند تعداد Request ها، حجم صفحه و زمان بارگذاری را مشاهده کنید.
اگر قالب شما نمره خوبی در تست نگرفته است و عدم بهینه بودن کاملا مشهود هست می توانید در یک محیط تست مانند یک ساب دامنه یا یک هاست مجزا ابتدا یک قالب سبک و استاندارد وردپرس را جایگزین کنید و دوباره همان تست را بگیرید.
اگر بعد از تغییر قالب، تعداد درخواست ها، حجم CSS و JavaScript یا زمان پاسخگویی سرور به شکل محسوسی کاهش پیدا کرد، احتمال زیادی وجود دارد که قالب فعلی بخشی از مشکل مصرف منابع سایت باشد.
از ابزار Insepct خود مرورگر ها هم می توانید برای بررسی حجم صفحه یا تعداد درخواست ها خطاهای احتمالی سایت هم استفاده کنید که ابزاری کاربردی و دقیقی هم می باشد.
برای بررسی دقیقتر نیز میتوانید از افزونه Query Monitor استفاده کنید تا تعداد Query های دیتابیس، زمان اجرای درخواست ها و پردازش های PHP را در قالب فعلی بررسی کنید.
نکته: تغییر قالب را مستقیما روی سایت اصلی انجام ندهید. بهتر است این تست همیشه روی نسخه های تستی یا یک کپی آزمایشی از سایت انجام شود تا اختلالی در سایت اصلی ایجاد نشود.
3- سیستم کش را فعال کنید:
یک سایت وردپرسی بدون فعال بودن کش هر چقدر هم بهینه باشد باز هم می تواند عملکرد بدی را در زمان ورودی بالا نشان دهد!
استفاده از کش و فعال بودن سیستم کش در سایت های وردپرسی یکی از مواردی هست که به شدت روی کاهش مصرف منابع تاثیر می گذارد.
وردپرس به شکل داینامیک کار می کند یعنی خیلی از درخواست ها باید با کدهای PHP اجرا شوند و اطلاعات از دیتابیس دریافت شود و سپس خروجی برای کاربر ساخته می شود و اگر قرار باشد این فرآیند برای هر کاربری و هر درخواستی بارها و بارها انجام شود در سایت های پربازدید می تواند فشار زیادی به سرور وارد کند.
سیستم کش با ذخیره نسخه آماده صفحات و برخی داده های پردازش شده، باعث می شود در بسیاری از درخواست ها نیازی به اجرای مجدد همه پردازش های PHP و Query های دیتابیس نباشد. در نتیجه مصرف منابع کاهش پیدا می کند و صفحات نیز سریع تر به کاربران نمایش داده می شوند.
راهکار عملی برای فعال سازی کش:
اگر هاست شما از وب سرور قدرتمندی مانند LiteSpeed استفاده می کند یکی بهترین گزینه ها برای فعالسازی کش در واقع افزونه LiteSpeed Cache می باشد.زیرا این افزونه می تواند مستقیما با سیستم کش سمت سرور LiteSpeed ارتباط برقرار کند.
بعد از نصب افزونه، از بخش تنظیمات LiteSpeed Cache مطمئن شوید که قابلیت Cache فعال است. سپس کش سایت را پاک کنید و چند صفحه مختلف را باز کنید تا نسخه کش شده آنها ایجاد شود.
برای بررسی عملکرد کش می توانید یک صفحه را چند بار متوالی باز کنید و زمان پاسخ گویی آن را با قبل مقایسه کنید. همچنین از ابزارهای تست سرعت می توانید برای بررسی کاهش زمان پاسخ سرور و بهبود TTFB استفاده کنید.
اگر بعد از فعال سازی کش، مصرف CPU، تعداد پردازش های PHP و زمان پاسخ سرور کاهش پیدا کرد، یعنی سیستم کش به درستی در کاهش بار سایت موثر بوده است.
ما قبلا در آموزش نصب افزونه LiteSpeed Cache این مورد را برای کاربران آماده کردیم که می توانید بررسی و نصب کنید.
4- از کش ردیس استفاده کنید:
Redis یکی از ابزارهایی هست که برای کاهش فشار روی دیتابیس کاربرد زیادی دارد و بیشتر به عنوان Object Cache مورد استفاده قرار می گیرد.
وردپرس همانطور که در بالا هم گفته شد برای نمایش صفحات و بخش های مختلف سایت بارها اطلاعات مورد نیاز خود را از دیتابیس دریافت می کند٬ برای سایت های سبک و نمایشی این مورد خیلی مشکل ساز نیست و شاید اصلا احساس هم نشود ولی وقتی تعداد محصولات٬ کاربران٬ سفارش ها یا بازدید بالایی در سایت ها وجود داشته باشد تکرار این درخواست ها به دیتابیس می تواند مصرف منابع را به شکل قابل توجهی افزایش دهد.
Redis بخشی از اطلاعاتی که وردپرس به صورت مکرر از دیتابیس درخواست می کند را داخل حافظه Ram نگهداری می کند و در صورتی که دوباره به همان اطلاعات نیاز شود دیگر به دیتابیس درخواست نمی فرستد و مستقیم از داده های کش شده خود برای نمایش استفاده می کند و این هم مصرف منابع را کاهش می دهد و هم سرعت پاسخ را افزایش می دهد.
این موضوع می تواند باعث کاهش تعداد Query های دیتابیس، کاهش زمان پردازش PHP و کاهش مصرف CPU شود و به خصوص در سایت های فروشگاهی ووکامرسی، سایت های پرترافیک و بخش مدیریت وردپرس تاثیر قابل توجهی داشته باشد.
فرق کش ردیس در مقایسه با کش صفحات اینجاست که در کش صفحه نسخه آماده یک صفحه ذخیره می شود در حالی که در ردیس ذخیره موقت داده ها و آبجکت هایی هست که وردپرس برای پردازش های خود به آن نیاز دارد و برای همین است که استفاده همزمان کش صفحه و ردیس کش می تواند نتیجه خوبی را ایجاد کند.
راهکار عملی برای فعال سازی Redis:
در ابتدا باید از فعال بودن قابلیت کش ردیس در هاست خود اطمینان حاصل کنید و اگر نسبت به این موضوع اطمینان ندارید که هاست شما از کش ردیس پشتیبانی می کند یا خیر می توانید از شرکت هاستینگ خود این مورد را پرس و جو کنید.
در هاست های پارس وب سرور قابلیت ردیس به صورت رایگان و با کمک ابزار آماده در سی پنل در اختیار کاربران قرار گرفته است و در صورتی که نیاز به فعالسازی دارند می توانند برای فعال کردن آن اقدام کنند.
پس از فعال کردن ردیس در سطح سی پنل خود باید در کانفیگ های مربوط به کش لایت اسپید آن را به درستی کانفیگ کنید تا تست اتصال با موفقیت سپری شود.
ما قبلا در آموزش فعالسازی کش ردیس در لایت اسپید این مورد را توضیح داده ایم.
برای بررسی تاثیر آن نیز می توانید قبل و بعد از فعالسازی، تعداد Query های دیتابیس و زمان اجرای آن ها را با ابزاری مانند Query Monitor مقایسه کنید. در سایت های پرترافیک بهتر است میزان مصرف CPU و MySQL نیز قبل و بعد از فعالسازی بررسی شود.
5- دیتابیس وردپرس را بهینه کنید:
دیتابیس ها به عنوان هسته و مغز وب سایت شما فعالیت می کنند و بخش زیادی از اطلاعات سایت مانند نوشته ها٬ تنظیمات٬ کاربران٬ دیدگاه ها و اطلاعات افزونه را درخود ذخیره می کنند.
با گذشت زمان و افزایش فعالیت سایت حجم دیتابیس نیز بیشتر می شود و اگر به صورت دوره ای بررسی و پاکسازی نشوند ممکن است اطلاعات غیرضروری در آن ها باقی بماند و به مرور این داده های غیرضروری باعث سنگین تر شدن دیتابیس و کاهش سرعت پاسخ دهی درخواست ها به دیتابیس شود.
برای مثال بازبینی های قدیمی نوشته ها، دیدگاه های اسپم، Transient های منقضیشده، داده های موقت افزونه ها و حتی جداول مربوط به افزونه هایی که مدت ها قبل حذف شده اند می توانند همچنان داخل دیتابیس باقی بمانند.
این نکته را در نظر داشته باشید افزایش حجم دیتابیس همیشه به تنهایی مشکل ساز نیست٬ مشکل زمانی رخ می دهد که جداول بهینه نباشند و یا حجم داده هایی که دیگر در سایت مورد استفاده قرار نمی گیرند افزایش پیدا کند که این موضوع سبب افزایش مصرف Cpu ٬ کند شدن پاسخگویی سایت و حتی افزایش زمان بارگذاری صفحات می شود.
این مسئله در سایت های فروشگاهی اهمیت بیشتری دارد٬ زیرا ووکامرس اطلاعات زیادی مانند سفارش ها، سبد خرید، محصولات، کاربران و داده های موقت را در دیتابیس نگهداری می کند و با افزایش تعداد سفارش ها و کاربران، فشار روی دیتابیس نیز بیشتر می شود.
راهکار عملی برای بهینه سازی دیتابیس:
بهینه سازی دیتابیس یک کار تخصصی محسوب می شود و حتما باید با دقت زیادی این کار انجام شود٬ چون هر اشتباه در خصوص دیتابیس می تواند باعث از دسترس خارج شدن سایت و مشکلات فراوانی در سایت شود.
برای شروع بهتر است موارد زیر را به صورت دوره ای بررسی کنید:
بازبینی های قدیمی و غیرضروری نوشته ها را حذف کنید.
دیدگاه های اسپم و موارد موجود در Trash را پاک کنید.
Transient های منقضی شده را حذف کنید.
جداول باقی مانده از افزونه هایی که دیگر استفاده نمی شوند را بررسی و حذف کنید.
جداولی که حجم غیرعادی بالایی دارند شناسایی شوند.
جداول دیتابیس را در صورت نیاز Optimize کنید.
افزونه هایی که حجم زیادی از داده را در جدول wp_options یا جداول اختصاصی خود ذخیره می کنند بررسی کنید.
قبل از حذف یا تغییر اطلاعات دیتابیس حتما یک نسخه Backup کامل تهیه کنید. حذف اشتباه یک جدول یا داده مهم می تواند باعث ایجاد اختلال در عملکرد سایت شود.
ما قبلا در یک مقاله جداگانه، روش های بهینه سازی دیتابیس وردپرس را به صورت کامل توضیح دادیم. برای بررسی جزئیات بیشتر می توانید مقاله آموزش بهینهسازی دیتابیس وردپرس را مطالعه کنید.
6- اجرای WP-Cron و درخواست های AJAX را مدیریت کنید:
بخش زیادی از پردازش ها و مصرف منابع وردپرس مربوط به بخش هایی هست که در پس زمینه اجرا می شود و در عمل مدیر سایت متوجه آن ها نیست!
WP-Cron و درخواست های AJAX از مهم ترین مواردی هستند که در صورت اجرای بیش از حد می توانند CPU و پردازش های PHP هاست را درگیر کنند.
WP-Cron سیستم زمان بندی داخلی وردپرس است و وظایفی مانند انتشار نوشته های زمان بندی شده، اجرای فعالیت های دوره ای افزونه ها، پاکسازی اطلاعات موقت و برخی پردازش های خودکار وردپرس را مدیریت می کند.
مشکل اصلی از اینجاست که WP-Cron به صورت پیش فرض براساس درخواست های ورودی سایت اجرا می شود و وقتی یک سایت پربازدید باشد و کاربران زیادی وارد آن شوند ممکن است اجرای آن بیش از اندازه نیاز واقعی باشد و اگر افزونه ها نیز Cron job های سنگین یا پرتکرار ساخته باشند این موضوع می تواند مصرف Cpu را به شدت افزایش دهد.
از طرف دیگر هم وردپرس برای درخواست های Ajax از فایل admin-ajax.php استفاده می کند و قابلیت هایی مانند ذخیره خودکار نوشته ها، برخی فعالیت های پیشخوان و امکانات مختلف قالب ها و افزونه ها میتوانند درخواست هایی به این فایل ارسال کنند.
وجود این پردازش به خودی خود مشکل ایجاد نمی کند بلکه در واقع مشکل از زمانی شروع می شود که یک افزونه یا قالب در وردپرس در فاصله زمانی کوتاه تعداد بالایی از درخواست های Ajax ایجاد می کند و در چنین شرایطی حتی بدون افزایش بازدیدکنندگان سایت٬ تعداد پردازش های PHP و مصرف Cpu افزایش پیدا می کند.
راهکار عملی برای مدیریت WP-Cron و AJAX:
برای WP-Cron ابتدا بهتر است وظایف زمان بندی شده سایت را بررسی کنید. افزونه هایی مانند WP Crontrol به شما کمک می کنند کران های وردپرس، زمان اجرای آن ها و افزونه ای که آن ها را ایجاد کرده است مشاهده کنید.
در سایتهای پرترافیک میتوانید اجرای خودکار WP-Cron در هر درخواست را غیرفعال کنید و بهجای آن از Cron Job واقعی هاست استفاده کنید. برای مثال میتوان اجرای wp-cron.php را متناسب با نیاز سایت هر 5، 10 یا 15 دقیقه یکبار انجام داد. با این روش تعداد اجرای غیرضروری WP-Cron کنترل می شود و فشار کمتری به منابع هاست وارد خواهد شد.
برای آموزش کامل این روش می توانید مقاله کاهش مصرف منابع سایت با محدود کردن اجرای WP-Cron را مطالعه کنید.
برای بررسی AJAX نیز میتوانید از Developer Tools مرورگر، لاگ های هاست یا افزونه Query Monitor استفاده کنید و تعداد درخواست های ارسال شده به admin-ajax.php را بررسی کنید.
اگر این درخواست ها به صورت مداوم و با فاصله زمانی بسیار کوتاه تکرار می شوند، باید افزونه یا قابلیتی که آن ها را ایجاد میکند شناسایی شود.
یکی از موارد رایج، WordPress Heartbeat API است. در برخی سایت ها میتوان فاصله ارسال درخواست های Heartbeat را بیشتر کرد یا آن را در بخش هایی که نیازی به آن وجود ندارد محدود کرد. این کار می تواند تعداد درخواست های Ajax و در نتیجه مصرف منابع را کاهش دهد.
آموزش انجام این کار را نیز قبلا در مقاله کاهش مصرف منابع هاست با غیرفعال کردن admin-ajax.php توضیح دادیم.
توجه: پیشنهاد نمیشود فایل admin-ajax.php را بهصورت کامل مسدود کنید؛ زیرا بسیاری از قابلیت های وردپرس، ووکامرس و افزونه ها برای عملکرد صحیح به آن وابسته هستند. هدف اصلی باید پیدا کردن درخواست های پرتکرار و غیرضروری و محدود کردن عامل ایجادکننده آن ها باشد.
7- از نسخه جدید و مناسب PHP استفاده کنید:
وردپرس سیستم مدیریت محتوایی هست که با PHP توسعه داده شده است و طبیعی هست که برای بسیاری از پردازش ها خود وابسته به PHP می باشد و به این ترتیب می توان گفت که نسخه ای که در سایت خود مورد استفاده قرا می دهید می تواند روی سرعت پردازش درخواست ها٬ مصرف Cpu ٬ امنیت و حتی پایداری سایت هم تاثیر داشته باشد.
استفاده از نسخه های قدیمی PHP علاوه بر مشکلات امنیتی که ایجاد می کند باعث می شود سایت از عملکرد ها بهینه و سریع نسخه های جدید بی بهره شود.
عموما نسخه های جدید PHP در نحوه اجرای کد و مدیریت حافظه می توانند بهتر و بهینه تر عمل کنند.
در حال حاضر وردپرس استفاده از PHP 8.3 یا بالاتر را پیشنهاد می کند. با این حال نباید بدون بررسی، PHP سایت را مستقیما به جدیدترین نسخه تغییر دهید زیرا ممکن است یک قالب یا افزونه قدیمی با نسخه جدید PHP سازگاری کامل نداشته باشد و باعث از دسترس خارج شدن سایت شود.
نسخه های منقضیشده PHP نیز دیگر بروزرسانی های امنیتی رسمی دریافت نمی کنند٬ بنابراین باقی ماندن طولانی مدت روی نسخه های قدیمی علاوه بر بحث مصرف منابع، از نظر امنیتی نیز انتخاب مناسبی نیست.
راهکار عملی برای بررسی و ارتقای PHP:
ابتدا نسخه PHP خود را از قسمت سلامت وردپرس یا در داخل سی پنل با قرار دادن phpinfo در کد ها مشخص کنید.
قبل از تغییر نسخه PHP بهتر است:
وردپرس، قالب و افزونه های سایت را به آخرین نسخه پایدار بروزرسانی کنید.
از سایت و دیتابیس بک آپ تهیه کنید.
در صورت امکان تغییر نسخه PHP را ابتدا روی محیطآزمایشی کنید.
سازگاری قالب و افزونه های مهم سایت با نسخه جدید PHP را بررسی کنید.
بعد از بروزرسانی نسخه PHP اگر مشاهده کردید صفحه اصلی سایت بدون مشکل در دسترس است به این معنا نیست که همه بخش ها بدون مشکل خواهند بود! حتما باید بخش های مدیریت وردپرس٬ صفحات محصولات٬ سبد خرید و پرداخت ووکامرس٬ فرم های تماس٬ ورود کاربران٬ جستجو و سایر قابلیت های مهم سایت هم تست شود.
بعد از ارتقا حتما فایل error_log را در ریشه وردپرس باز کنید تا اگر خطایی نشان داده می شود مبنی بر Deprecated، Warning یا Fatal Error می تواند از ناسازگاری یکی از افزونه ها یا بخش هایی از قالب با نسخه جدید PHP باشد.
پس از ارتقای PHP، فقط صفحه اصلی سایت را بررسی نکنید. بخش مدیریت وردپرس، صفحات محصولات، سبد خرید و پرداخت در ووکامرس، فرمهای تماس، ورود کاربران، جستجو و سایر قابلیتهای مهم سایت را نیز تست کنید.
اگر هم هدف کاهش مصرف منابع و افزایش سرعت سایت هست بهتر است حتما نمودار مصرف Ram و Cpu و حتی تعداد پردازش ها و زمان پاسخگویی سایت را قبل و بعد تغییر نسخه مقایسه کنید تا نشان دهد چه تاثیری روی عملکرد داشته است.
نکته: همیشه جدید ترین نسخه PHP الزاما بهترین انتخاب برای یک سایت موجود نیست. نسخهای را انتخاب کنید که همچنان پشتیبانی امنیتی دریافت می کند و وردپرس، قالب و افزونه های شما با آن سازگاری کامل داشته باشد.
8- تصاویر سایت را بهینه کنید:
یکی از مواردی که عموما در سایت هایی که حجم صفحه بالایی دارند مشاهده می شود این است که تصاویر بدون بهینه سازی و کاهش حجم و فرمت صحیح در داخل سایت قرار گرفته اند و بخش قابل توجهی از حجم صفحه را به خود اختصاص داده اند.
افزایش حجم صفحه بخاطر تصاویر حجیم می تواند مصرف پهنای باند را افزایش دهد و سرعت بارگذاری صفحات را کاهش دهد.
برای مثال استفاده از یک تصویر چند مگابایتی با ابعاد 3000×2000 پیکسل در بخشی از سایت که تصویر فقط با عرض 600 پیکسل نمایش داده می شود، باعث انتقال حجم اضافی به کاربر خواهد شد.
بهتر است تصاویر قبل یا هنگام بارگذاری در وردپرس فشرده شوند و با ابعاد متناسب با محل نمایش ذخیره شوند. استفاده از فرمت های جدید مانند WebP و AVIF نیز می تواند بدون افت محسوس کیفیت، حجم تصاویر را به شکل قابل توجهی کاهش دهد.
قابلیت Lazy Load نیز باعث می شود تصاویری که در قسمت پایین صفحه قرار دارند تا زمانی که کاربر به آن بخش نرسیده است بارگذاری نشوند. این موضوع تعداد درخواست های اولیه صفحه و حجم اطلاعاتی که در شروع باز شدن سایت منتقل می شود را کاهش می دهد و باعث افزایش سرعت بارگذاری می شود.
در سایت های فروشگاهی که هر صفحه ممکن است تصاویر متعددی از محصولات داشته باشد، بهینه سازی تصاویر تاثیر بیشتری روی سرعت صفحات و تجربه کاربران خواهد داشت.
راهکار عملی برای بهینه سازی تصاویر:
برای شروع بهتر است موارد زیر را بررسی کنید:
تصاویر را قبل از آپلود با ابعاد مناسب ذخیره کنید و از آپلود تصاویر بسیار بزرگ بدون نیاز خودداری کنید.
تصاویر JPEG و PNG را فشرده کنید و در صورت امکان از WebP یا AVIF استفاده کنید.
مطمئن شوید Lazy Load برای تصاویر پایین صفحه فعال است.
تصاویر بسیار حجیم موجود در بخش رسانه را شناسایی و بهینه کنید.
از قرار دادن تصویر بزرگ در صفحه و کوچک کردن آن فقط با CSS خودداری کنید.
قابلیت ریسپانسیو تصاویر وردپرس را حفظ کنید تا متناسب با اندازه صفحه کاربر، نسخه مناسب تصویر بارگذاری شود.
همچنین در بخش Network در Inspect مرورگر می توانید مشخص کنید کدام تصاویر حجم زیادی دارند و آیا نسخه WebP یا AVIF آن ها بهدرستی برای کاربران ارسال می شود یا خیر.
9- تعداد Thumbnail های وردپرس را کاهش دهید:
وردپرس عموما هنگام آپلود تصاویر٬ علاوه بر فایل اصلی که آپلود می کنید چند نسخه دیگر با ابعاد مختلف ایجاد می کند و قالب و افزونه ها هم می توانند اندازه های اختصاصی خود را به لیست اضافه می کنند.
در نتیجه ممکن است با آپلود یک تصویر، چندین فایل Thumbnail مختلف روی هاست ساخته شود. اگر سایت هزاران تصویر داشته باشد، این موضوع می تواند باعث افزایش قابل توجه فضای مصرفی هاست و حجم بک آپ ها شود.
ساخت این تصاویر در زمان آپلود نیز به پردازش PHP و کتابخانه های پردازش تصویر مانند GD یا ImageMagick نیاز دارد. بنابراین در سایت هایی که تصاویر زیادی به صورت همزمان آپلود یا پردازش می شوند، تعداد زیاد Thumbnail ها می تواند برای مدتی CPU و RAM سرور را نیز درگیر کند.
این مشکل در سایت های فروشگاهی بیشتر دیده می شود٬ زیرا هر محصول ممکن است چندین تصویر داشته باشد و قالب یا ووکامرس نیز اندازه های مختلفی برای تصاویر محصول، گالری و بخش های دیگر ایجاد کند.
راهکار عملی برای کاهش Thumbnail های اضافی:
برای جلوگیری از این مورد فقط کافی هست وارد بخش تنظیمات و سپس رسانه شوید و اندازه های تعریف شده برای تصاویر را بررسی کنید٬ اگر برخی از اندازه ها در سایت شما استفاده نمی شود می توانید ایجاد شدن آن ها را متوقف کنید.
همچنین باید اندازههایی را که توسط قالب و افزونه ها ایجاد شد هاند بررسی کنید زیرا بسیاری از Thumbnail های اضافی در همین بخش ایجاد می شوند و در تنظیمات پیش فرض رسانه وردپرس قابل مشاهده نیستند.
برای بررسی عملی، یک تصویر جدید آپلود کنید و سپس پوشه مربوط به همان ماه را در مسیر آپلود بررسی کنید.
اگر برای یک تصویر تعداد زیادی نسخه با ابعاد مختلف ایجاد شده است، مشخص کنید کدام اندازه ها واقعا در صفحات سایت مورد استفاده قرار می گیرند و تولید موارد غیرضروری را متوقف کنید.
توجه داشته باشید که غیرفعال کردن یک اندازه تصویر، Thumbnail های قدیمی را حذف نمی کند. بنابراین اگر سایت مدت زیادی فعال بوده است، پس از تهیه بک آپ می توانید تصاویر اضافی قدیمی را نیز با ابزار مناسب پاکسازی کنید.
بعد از اعمال تغییرات نیز صفحات اصلی، نوشته ها و مخصوصا تصاویر محصولات ووکامرس را بررسی کنید تا مطمئن شوید حذف یک اندازه Thumbnail باعث نمایش تصویر نامناسب یا افت کیفیت نشده است.
10- از ربات های مخرب، Brute Force و درخواست های پرتکرار جلوگیری کنید:
گاهی اوقات دیده می شود که افزایش مصرف Cpu و Ram لزوما ارتباطی با تعداد کاربرانی که وارد سایت می شوند ندارد.
مخصوص برای سایت هایی که بازدید کننده بالایی ندارند گاها دیده می شود که به صورت نامنظم مصرف منابع افزایش چشم گیری پیدا کرده است.
بخش زیادی از این مصرف منابع توسط ربات ها٬ خزنده های مخرب یا درخواست های پرتکراری که به صورت خودکار ایجاد می شود مصرف می شوند.
این رباتها ممکن است در مدت کوتاهی هزاران درخواست به بخش های مختلف سایت ارسال کنند برای مثال:
صفحات مختلف سایت را با سرعت بالا Crawl کنند.
صفحه جستجو را به صورت مداوم فراخوانی کنند.
wp-login.php را برای حملات Brute Force هدف قرار دهند.
درخواستهای متعددی به XML-RPC یا REST API ارسال کنند.
URL های تصادفی و نامعتبر را بررسی کنند.
فرم ها و بخش های مختلف سایت را اسکن کنند.
خیلی از این درخواست ها باعث اجرای PHP و درخواست ها به دیتابیس می شود. بنابراین حتی اگر تعداد کاربران واقعی سایت هم کم باشد٬ حجم این درخواست ها می تواند Cpu را به شکل قابل ملاحظه ای افزایش دهد و در شرایط حاد باعث از دسترس خارج شدن سایت شود.
یکی از روش های موثر برای کنترل این وضعیت استفاده از Rate Limiting است. با Rate Limit می توان مشخص کرد یک IP در مدت زمان معین حداکثر چند درخواست به یک مسیر مشخص ارسال کند. این محدودیت را می توان برای بخش هایی مانند صفحه ورود، جستجو، API، فرم ها و سایر URL های حساس اعمال کرد.
برای صفحه ورود وردپرس نیز این موضوع اهمیت بیشتری دارد٬ زیرا حملات Brute Force می توانند تعداد بسیار زیادی درخواست لاگین ایجاد کنند. استفاده از Rate Limit، فایروال، محدودیت اقدام لاگین و در صورت نیاز CAPTCHA می تواند جلوی بخش زیادی از این پردازش های غیرضروری را بگیرد.
نکته: همه Bot ها مخرب نیستند. موتورهای جستجو و سرویس های معتبر نیز از Bot استفاده می کنند بنابراین قبل از مسدود سازی یک User-Agent یا IP، ابتدا نوع درخواست و منبع آن را بررسی کنید.
11- XML-RPC وردپرس را بررسی کنید:
XML-RPC یکی از قابلیت های وردپرس است که امکان ارتباط از راه دور سرویس ها و نرم افزار های دیگر با سایت را فراهم می کند. این ارتباط از طریق فایل xmlrpc.php انجام می شود و می تواند برای برخی سرویس های خارجی، ابزارهای مدیریت وردپرس و قابلیت های خاص مورد استفاده قرار گیرد.
خود XML-RPC به تنهایی مشکل امنیتی یا عامل مصرف بالای منابع نیست٬ اما باز بودن بدون محدودیت آن می تواند توسط Bot ها و مهاجمان مورد سوءاستفاده قرار گیرد.
برای مثال ممکن است پردازش های زیادی را در مسیر دامنه خود و فایل xmlrpc.php مشاهده کنید.
هر درخواست به این فایل برخلاف یک فایل استاتیک ساده، میتواند وارد چرخه اجرای PHP و وردپرس شود. بنابراین اگر یک Bot هزاران درخواست به XML-RPC ارسال کند، مصرف CPU، پردازش های PHP و در برخی شرایط Query های دیتابیس افزایش پیدا می کند.
بنابراین اگر افزایش غیرعادی مصرف منابع دارید، بررسی درخواست های xmlrpc.php یکی از مواردی است که نباید فراموش شود.
راهکار عملی برای بررسی XML-RPC:
ابتدا Access Log سایت را بررسی کنید و ببینید چه تعداد درخواست به xmlrpc.php ارسال می شود. اگر در فاصله زمانی کوتاه صدها یا هزاران درخواست از IP های مختلف یا مشکوک مشاهده کردید، احتمالاً XML-RPC تحت اسکن یا حمله قرار گرفته است.
همچنین میتوانید آدرس زیر را در مرورگر باز کنید:
https://example.com/xmlrpc.php
و به جای example.com دامنه خود را قرار دهید. اگر پیامی مانند XML-RPC server accepts POST requests only. مشاهده کردید، دسترسی مستقیم به این فایل باز است.
اگر از XML-RPC و سرویسهایی که به آن وابسته هستند استفاده نمی کنید، می توانید دسترسی به این فایل را محدود یا مسدود کنید.
قبل از غیرفعال کردن XML-RPC مطمئن شوید سایت یا سرویس های متصل به آن به این قابلیت نیاز ندارند. مسدود کردن بدون بررسی می تواند باعث اختلال در برخی سرویس های خارجی شود.
روشهای تشخیص فعال بودن XML-RPC، بررسی حملات و نحوه محدود یا غیرفعال کردن آن را بهصورت کامل در مقاله XML-RPC در وردپرس چیست؟ آموزش غیر فعالسازی و جلوگیری از حملات توضیح داده ایم که می توانید مطالعه بفرمایید.
12- WooCommerce را جداگانه بهینه کنید:
سایت های ووکامرسی معمولا نسبت به سایر سایت های وردپرسی محتوای بیشتری دارند و بخش قابل توجهی از این محتوا به صورت لحظه ای تولید و بروزرسانی می شود.
در یک سایت فروشگاهی، اطلاعاتی مانند سبد خرید، موجودی محصولات، قیمت ها، تخفیف ها، حساب کاربری، سفارش ها، سشن ها و صفحه پرداخت دائما در حال تغییر هستند. به همین دلیل بسیاری از این صفحات را نمیتوان مانند یک صفحه مقاله به صورت کامل کش کرد.
هرچه تعداد محصولات٬ ویژگی های هر محصول و متغییر های آن بیشتر باشد. درخواست های بیشتری هم برای دریافت اطلاعات محصولات اجرا می شود. فیلترهای پیشرفته فروشگاه نیز در سایت های بزرگ می تواند فشار قابل توجهی به دیتابیس وارد کند.
افزونه های جانبی ووکامرس نیز اهمیت زیادی دارند. افزونه های فیلتر محصولات، قیمت گذاری لحظه ای، درگاه ها، گزارش گیری، همگام سازی موجودی، ارسال پیامک، اتصال به سرویس های خارجی و امکانات مشابه ممکن است پردازش های اضافی ایجاد کنند.
راهکار عملی برای بهینه سازی ووکامرس:
برای شروع بهتر است موارد زیر را بررسی کنید:
افزونه های جانبی ووکامرس را بررسی و موارد غیرضروری را حذف کنید.
تعداد متغییر محصولات و ساختار محصولات متغیر را بررسی کنید.
سرعت صفحات فروشگاه، دسته بندی و جستجوی محصولات را جداگانه تست کنید.
Query های سنگین محصولات و فیلترها را با ابزارهایی مانند Query Monitor بررسی کنید.
وضعیت Scheduled Action های ووکامرس را بررسی کنید و ببینید آیا تعداد زیادی Action در حالت Pending یا Failed وجود دارد.
Cron Job های مربوط به ووکامرس و افزونه های جانبی را بررسی کنید.
Session های ووکامرس و داده های موقت قدیمی را در صورت نیاز پاکسازی کنید.
پنل کاربری٬ سفارش ها٬ سبد خرید را از کش مستنثنی کنید.
با بررسی و انجام موارد گفته شده تا حد زیادی می توان مصرف منابع را در سایت های ووکامرس کاهش داد٬ در نظر داشته باشید افزونه های جانبی عموما یکی از علت های مصرف بالای Ram و Cpu می باشند٬ بهتر است تا جای ممکن از افزونه های کمتری به عنوان قابلیت های اضافی ووکامرس استفاده شود.
13- در استفاده از المنتور زیاده روی نکنید:
اکثر سایت های وردپرسی امروزه با افزونه هایی نظیر المنتور و المنتور پرو صفحات مربوط و مورد نیاز خود را ایجاد می کنند و کاملا این افزونه کار را برای طراحان ساده کرده است.
اما موردی که باید در خصوص استفاده از این افزونه ها رعایت شود این است که نباید تمام امکانات آن ها را روی یک صفحه پیاده سازی کرد! استفاده بیش از حد از قابلیت ها ویجت های این افزونه ها باعث سنگین شدن صفحات می شود.
هر قابلیتی که شما به صفحه خود اضافه می کنید ممکن است HTML، CSS، JavaScript یا حتی Query و پردازش PHP جدیدی ایجاد کند بنابراین یک صفحه با طراحی پیچیده می تواند صدها المان داشته باشد و فایل ها و درخواست های بیشتری برای نمایش آن نیاز باشد.
اضافه شدن ویژگی هایی نظیر موارد گفته شده نه تنها سایت را کندتر می کند بلکه ویرایش همان صفحه هم در پیشخوان وردپرس یا در بخش ویرایش با المنتور کند خواهد شد.
این موضوع مخصوصا در صفحات فروشگاهی اهمیت بیشتری دارد. برای مثال نمایش چندین بخش محصولات پرفروش، محصولات جدید، محصولات تخفیف دار و محصولات مرتبط در یک صفحه ممکن است برای هر بخش Query های جداگانه ای به دیتابیس ارسال کند.
این نکته را فراموش نکنید که منظور از موارد گفته شده این نیست که استفاده از المنتورها باعث افت سرعت و افزایش منابع می شود بلکه مشکل زمانی هست که طراحی صفحات بدون توجه به المان ها و پردازش های مورد نیاز آن ها بیش از حد پیچیده شود.
راهکار عملی برای بررسی صفحه ساز:
یکی از صفحات سنگین سایت مانند صفحه اصلی یا Landing Page را انتخاب کرده و با PageSpeed Insights یا GTmetrix بررسی کنید. حجم صفحه، تعداد Request ها و مشکلات مربوط به DOM و JavaScript را یادداشت کنید.
سپس از Developer Tools مرورگر و بخش Network می توانید بررسی کنید چه تعداد فایل CSS و JavaScript توسط المنتور و افزونه های جانبی آن بارگذاری می شوند.
برای بررسی سمت سرور نیز Query Monitor ابزار مناسبی است. با آن می توانید تعداد Query ها و زمان پردازش صفحه را بررسی کنید و ببینید آیا ویجت یا بخش داینامیک خاصی Query های زیادی ایجاد میکند یا خیر.
تا حد امکان از ساختار ساده تر، Container های کمتر و ویجت های ضروری استفاده کنید و برای یک قابلیت ساده چند افزونه جانبی نصب نکنید.
14- درخواست های خارجی را کاهش دهید:
یکی دیگر از مواردی که باعث افزایش مصرف Cpu می شود و عموما کاربران از آن بی اطلاع هستند در واقع لینک های خارجی هست که در قالب وجود دارد.
بعضی قالب ها و افزونه های وردپرسی برای دریافت اطلاعات از سرویس های دیگر به صورت مداوم درخواست خارجی ارسال می کنند. این درخواست ها ممکن است برای دریافت اطلاعات API، بررسی لایسنس، همگام سازی داده ها، دریافت نرخ ارز، اتصال به سرویس پیامک، شبکه های اجتماعی، فونت ها، آمار یا سرویس های جانبی انجام شوند.
اگر تعداد این درخواست ها بالا باشد یا بدتر از آن٬ مقصد پاسخگویی کندی داشته باشد باعث می شود پردازش PHP تا دریافت پاسخ منتظر بماند و زمان اجرای درخواست افزایش پیدا می کند و درخواست های PHP برای مدت زمان بیشتری درگیر می ماند.
این مشکل زمانی جدی تر می شود که یک افزونه در هر بار باز شدن صفحه، بدون کش کردن نتیجه، مجددا به یک API خارجی متصل شود. اگر سرویس خارجی کند یا موقتا از دسترس خارج باشد، سرعت سایت شما نیز می تواند تحت تاثیر قرار بگیرد و منابع را درگیر کند.
راهکار عملی برای بررسی درخواست های خارجی:
در قدم اول برای اینکه متوجه شوید اصلا درخواست خارجی در قالب هست یا خیر فقط کافی هست مجدد از ابزار Insepct مرورگر استفاده کنید و از تب Network با یک فول رفرش کردن صفحه تمام درخواست ها را براساس دامنه Sort کنید تا مشخص شود که لینک خارجی در قالب وجود دارد یا خیر!
در صورتی که لینک هایی که وجود داشت ضروری نبود می توانید آن ها را بردارید برای مثال اگر از فونت های گوگل استفاده می کنید بهتر است آن را داخلی کنید تا درخواست به خارج نرود یا اگر آیکون شبکه های اجتماعی در قالب هست آن ها را بردارید چون فیلتر بودن بعضی شبکه ها باعث کندی شدید می شود.
برای بررسی درخواست های سمت سرور نیز می توانید از افزونه Query Monitor استفاده کنید و بخش HTTP API Calls را بررسی کنید. این قسمت کمک می کند مشخص شود کدام افزونه ها به سرویس های خارجی درخواست ارسال می کنند و پاسخ هر درخواست چه مدت زمان برده است.
اگر یک افزونه درخواست خارجی پرتکرار دارد باید ابتدا تنظیمات را بررسی کنید گاهی اوقات می توان فاصله همگام سازی را افزایش داد یا قابلیت غیرضروری را غیرفعال کرد.
همچنین بهتر است افزونه ها و سرویس هایی را که دیگر استفاده نمی کنید حذف کنید و از بارگذاری اسکریپت های خارجی غیرضروری در تمام صفحات سایت جلوگیری کنید.
15- بکاپ را در ساعات خلوت اجرا کنید:
بعضی از مدیران سایت ها فقط به بک آپ گیری که توسط شرکت هاستینگ گرفته می شود اکتفا نمی کنند و به صورت منظم و اتوماتیک با اسکریپت هایی که برای بک آپ گیری می نویسند برای خود بک آپ تهیه می کنند.
این روش که کاملا مورد تایید هست به خودی خود هیچ مشکلی ندارد و اتفاقا یک نکته بسیار مثبت و کابردری هم می باشد چون بک آپ گیری یکی از مهم ترین کارهایی هست که هر مدیر سایت یا پشتیبان سایت باید انجام دهد.
مشکل از جایی شروع می شود که تصور کنید بک آپ گیری عملیات سبکی هست! ساخت یک فایل فشرده از هزاران فایل و خروجی گرفتن از دیتابیس می تواند میزان I/O هارد دیسک٬ میزان مصرف Cpu و Ram را افزایش دهد.
حالا تصور کنید که بک آپ گیری در ساعات اوج ترافیک انجام شود در این شرایط کاربران می توانند با افت سرعت رو به رو شوند.
همچنین در نظر داشته باشید این مورد برای سایت های حجیم و سایت هایی که دیتابیس سنگین دارند بیشتر از بقیه سایت ها خود را نشان می دهد.
راهکار عملی برای مدیریت بکاپ ها:
بهترین گزینه این است که زمان اجرای بک آپ های خودکار را به ساعاتی منتقل کنید که کمترین میزان بازدید و پردازش را دارید.
پیدا کردن اینکه کدام زمان برای سایت شما کم ترافیک ترین زمان ممکن است سخت نیست فقط کافی هست نمودار مصرف سایت را مشاهده کنید و ببینید در چه بازه های زمانی مصرف پایین تر می باشد.
هرچند عموما برای سایت ها بامداد و نزدیک های صبح بهترین زمان بک آپ گیری می باشد.
اگر سیستم بکاپ گیری شما امکان زمان بندی دارد، از اجرای چند بک آپ مختلف به صورت همزمان نیز جلوگیری کنید. برای مثال بهتر است بکاپ کامل سایت، بکاپ دیتابیس و سایر عملیات سنگین سرور در یک بازه زمانی مشابه اجرا نشوند.
همچنین فایل های بک آپ قدیمی را بدون دلیل برای مدت طولانی روی هاست اصلی نگهداری نکنید. باقی ماندن تعداد زیادی فایل بکاپ علاوه بر اشغال فضای هاست، می تواند حجم بکاپ های بعدی و زمان مدیریت یا انتقال فایل ها را نیز افزایش دهد.
در صورت امکان نسخه های بکاپ قدیمی را براساس یک برنامه مشخص حذف یا به فضای ذخیره سازی دیگری منتقل کنید و فقط تعداد مورد نیاز از نسخه های اخیر را روی سرور نگه دارید.
16- اسکن های امنیتی را مدیریت کنید:
افزونه های امنیتی نقش بسیار مهمی در امن بودن پروژه و پیدا کردن فایل های آلوده و شناسایی تغییرات مشکوک سایت دارند.
این افزونه ها کمک می کنند جلوی آپلود شل و اجرای فایل های PHP مخرب گرفته شود و سایت امن باقی بماند البته که این قابلیت می تواند منابع قابل توجهی از سرور را مصرف کنند.
یکی از این موارد اسکن کامل فایل های وردپرس است. برخی افزونه های امنیتی برای پیدا کردن فایل های مخرب یا تغییر یافته، تمام فایل های وردپرس، قالب ها، افزونه ها و مسیرهای مختلف هاست را بررسی می کنند.
در سایت های کوچک ممکن است اجرای چنین اسکن هایی مشکل خاصی ایجاد نکند، اما در سایت هایی که تعداد فایل ها زیاد است یا حجم بالایی از تصاویر، افزونه ها و فایل های جانبی دارند، اسکن کامل می تواند Cpu، Ram و دیسک I/O سرور را برای مدتی درگیر کند.
اگر این اسکن ها در فاصله زمانی بسیار کوتاه اجرا شوند یا زمان اجرای آن ها با ساعات اوج بازدید سایت همزمان باشد، ممکن است باعث افزایش مصرف منابع، کند شدن سایت و در شرایطی حتی افزایش زمان پاسخگویی صفحات شود.
راهکار عملی برای مدیریت اسکن های امنیتی:
حل این مشکل خیلی سخت نیست فقط کافی هست که در تنظیمات افزونه های امنیتی خود بررسی و مشخص کنید در چه بازه زمانی اسکن ها انجام می شود.
بهتر است اسکن های سنگین و کاملا از پروژه در زمان هایی اجرا شود که سایت بازدید کمتری دارد و پردازش های دیگر مانند کرانجاب ها و بک آپ گیری ها با آن تداخل نداشته باشد.
همچنین از اجرای بیش از حد اسکن کامل خودداری کنید. در بسیاری از سایت ها نیازی نیست چندین بار در روز تمام فایل های هاست به صورت کامل بررسی شوند و می توان زمان بندی آن را متناسب با نوع سایت و میزان حساسیت آن تنظیم کرد.
اگر افزونه امنیتی امکان تعیین مسیرهای اسکن را دارد، پوشه ها یا فایل هایی را که نیازی به بررسی مداوم ندارند از اسکن های سنگین مستثنی کنید؛ البته این کار باید با دقت انجام شود تا مسیرهای مهم وردپرس از بررسی امنیتی خارج نشوند.
در نهایت اگر هنگام اجرای اسکن امنیتی افزایش شدید سی پیو یا کندی سایت مشاهده می کنید، بهتر است زمان اجرای اسکن، دفعات تکرار آن و تنظیمات افزونه امنیتی را بررسی کنید.
17- پیشخوان وردپرس را سبک نگه دارید:
وارد بعضی از پیشخوان های سایت های وردپرسی که می شویم با بمباران اطلاعات و آمار ها رو به رو می شویم! این کار شاید در عمل اعداد مفیدی را به شما نمایش دهند اما باعث سنگین شدن هرچه بیشتر پیشخوان و مصرف منابع هم می شود.
برای مثال بعضی از افزونه ها اطلاعات مختلفی را نیاز به نمایش دارند که باید از دیتابیس دریافت کنند و هر بار درخواست هایی را به سمت دیتابیس ارسال می کنند یا به API های خارجی متصل می شوند و پردازش های جداگانه انجام می دهند.
برای مثال افزونه های فروشگاهی، آماری، امنیتی، سئو و بازاریابی ممکن است در پیشخوان وردپرس گزارش فروش، تعداد سفارش ها، آمار بازدید، وضعیت امنیتی سایت، اطلاعات سئو یا داده های دریافت شده از سرویس های خارجی را نمایش دهند.
در سایت های کوچک معمولا این پردازش ها مشکل زیادی ایجاد نمی کنند، اما در سایت های بزرگ و مخصوصا فروشگاه های ووکامرسی که حجم دیتابیس و تعداد سفارش ها بالا است، حتی باز کردن صفحه پیشخوان می تواند باعث اجرای تعداد زیادی Query و افزایش محسوس مصرف سی پیو شود.
این مشکل زمانی بیشتر احساس می شود که چند افزونه مختلف به صورت همزمان گزارش ها و اطلاعات خود را در پیشخوان بارگذاری کنند و هر کدام برای نمایش اطلاعات نیاز به پردازش جداگانه داشته باشند.
راهکار عملی برای سبک کردن پیشخوان وردپرس:
در قدم اول Widget ها و گزارش هایی را که در صفحه پیشخوان نمایش داده می شوند بررسی کنید و مواردی را که استفاده ای از آن ها ندارید غیرفعال یا مخفی کنید.
اگر افزونه ای امکان غیرفعال کردن نمایش یا گزارش های آماری خود را از بخش تنظیمات دارد، قابلیت های غیرضروری آن را متوقف کنید.
همچنین اگر هنگام ورود به پیشخوان وردپرس مصرف سی پیو افزایش پیدا می کند یا بارگذاری پیشخوان زمان زیادی طول می کشد، می توانید با استفاده از افزونه Query Monitor تعداد Query ها، زمان اجرای آن ها و درخواست های خارجی را بررسی کنید تا مشخص شود کدام افزونه یا بخش بیشترین پردازش را ایجاد می کند.
در سایت های ووکامرسی نیز بهتر است گزارش ها و ابزارهای آماری سنگینی که استفاده روزانه از آن ها ندارید محدود شوند، زیرا محاسبه اطلاعات مربوط به سفارش ها، فروش، محصولات و مشتریان در دیتابیس های بزرگ می تواند پردازش قابل توجهی ایجاد کند.
18- جستجوی داخلی سایت و فیلترهای سنگین را بهینه کنید:
جستجوی داخلی سایت و فیلترهای مختلف یکی از بخش هایی هستند که مخصوصا در سایت های فروشگاهی و سایت هایی با حجم بالای محتوا می توانند فشار قابل توجهی به دیتابیس وارد کنند.
در یک فروشگاه ووکامرسی که هزاران محصول دارد، هر بار که کاربر عبارتی را جستجو می کند یا محصولات را براساس قیمت، دسته بندی، ویژگی ها، موجودی، برند یا سایر مشخصات فیلتر می کند ممکن است چندین درخواست برای دریافت و مرتب سازی اطلاعات از دیتابیس اجرا شود.
هرچه تعداد محصولات، ویژگی ها و اطلاعات ذخیره شده در متادیتای محصولات بیشتر باشد، بعضی از این Query ها نیز می توانند سنگین تر شوند و زمان بیشتری برای اجرا نیاز داشته باشند.
این مسئله مخصوصا زمانی جدی تر می شود که از افزونه های فیلتر پیشرفته استفاده می کنید. بعضی از این افزونه ها برای هر تغییر فیلتر درخواست جدیدی به سرور ارسال می کنند و اگر ساختار درخواست های آن ها بهینه نباشد، استفاده همزمان چند کاربر می تواند مصرف سی پیو و دیتابیس را افزایش دهد.
موضوع دیگری که باید به آن توجه شود Bot ها و خزنده ها هستند. بعضی ربات ها ممکن است URL های مختلف ایجاد شده توسط فیلترها یا صفحات جستجو را به صورت مداوم Crawl کنند. برای مثال ترکیب چند فیلتر مختلف می تواند تعداد بسیار زیادی URL ایجاد کند و اگر هر کدام از این URL ها باعث اجرای Query های سنگین شوند، حتی بدون افزایش کاربران واقعی نیز مصرف منابع سایت بالا خواهد رفت.
راهکار عملی برای بهینه سازی جستجو و فیلترها:
ابتدا صفحات جستجو، فروشگاه و فیلترهای محصولات را جداگانه بررسی کنید و ببینید سرعت پاسخگویی آن ها نسبت به سایر صفحات سایت چگونه است.
با استفاده از افزونه Query Monitor می توانید تعداد Query ها و زمان اجرای آن ها را هنگام انجام جستجو یا اعمال فیلتر بررسی کنید. اگر Query خاصی زمان اجرای بالایی دارد، باید افزونه یا قابلیتی که آن را ایجاد کرده است شناسایی شود.
در سایت های فروشگاهی بهتر است از ایجاد تعداد زیادی فیلتر غیرضروری خودداری کنید و فقط ویژگی هایی را در اختیار کاربران قرار دهید که واقعا برای پیدا کردن محصول کاربرد دارند.
همچنین اگر افزونه فیلتر محصولات استفاده می کنید، عملکرد آن را روی تعداد زیاد محصول تست کنید. افزونه ای که روی فروشگاهی با چند صد محصول عملکرد مناسبی دارد ممکن است روی سایتی با ده ها هزار محصول فشار زیادی به دیتابیس وارد کند.
Access Log سرور را نیز بررسی کنید تا مشخص شود آیا Bot ها تعداد زیادی درخواست به صفحات جستجو یا URL های دارای پارامترهای فیلتر ارسال می کنند یا خیر. در صورت مشاهده درخواست های غیرطبیعی می توان با استفاده از Rate Limiting، تنظیمات فایروال یا محدود کردن Crawl URL های غیرضروری از ایجاد پردازش های اضافه جلوگیری کرد.
در سایت های بسیار بزرگ نیز ممکن است سیستم جستجوی پیش فرض وردپرس پاسخگوی حجم اطلاعات نباشد و استفاده از یک موتور جستجوی بهینه تر یا سیستم Index شده برای جستجوی محصولات نتیجه بهتری ایجاد کند.
هاست متناسب با پروژه انتخاب کنید:
اگر تمام موارد گفته شده را انجام دادید ولی همچنان احساس می کنید مصرف سایت شما بالاست ولی دیگر مورد بیشتری برای بررسی وجود ندارد شاید وقت آن باشد که به ارتقا هاست یا تهیه یک هاست مناسب تر هم فکر کنید.
هر سایت وردپرسی با توجه به نوع فعالیت، تعداد بازدیدکنندگان، حجم دیتابیس، تعداد محصولات، افزونه ها و میزان پردازش هایی که انجام می دهد به منابع متفاوتی نیاز دارد.
برای مثال یک سایت شرکتی ساده با چند صفحه ثابت منابع بسیار کمتری نسبت به یک فروشگاه ووکامرسی با هزاران محصول، سفارش های متعدد و کاربران همزمان مصرف می کند. به همین دلیل انتخاب هاست باید متناسب با نیاز واقعی پروژه انجام شود.
در زمان خرید هاست فقط نباید به میزان فضای دیسک توجه کرد. منابعی مانند Cpu، Ram، دیسک I/O، تعداد پردازش های همزمان و … نیز تاثیر مستقیمی روی عملکرد سایت دارند.
اگر منابع هاست کمتر از نیاز واقعی سایت باشد، در زمان افزایش بازدید یا اجرای پردازش های سنگین ممکن است سرعت سایت کاهش پیدا کند و حتی خطاهایی مانند 503 یا 504 مشاهده شود.
از طرف دیگر استفاده از هاست قدرتمند نیز نباید جایگزین بهینه سازی سایت شود. اگر افزونه ها، دیتابیس، قالب یا پردازش های پس زمینه بهینه نباشند، افزایش منابع فقط می تواند مشکل را برای مدتی پنهان کند.
بنابراین بهتر است ابتدا مصرف واقعی سایت مشخص شود و سپس سرویسی انتخاب شود که علاوه بر پاسخگویی به مصرف عادی، توان مدیریت افزایش مقطعی بازدید و پردازش های سایت را نیز داشته باشد.
برای مثال در سایت های سنگین فروشگاهی و یا سایت های وردپرسی پربازدید استفاده از هاست هایی نظیر هاست ووکامرس یا هاست اختصاصی می تواند گزینه بسیار خوبی باشد. این هاست با دارا بودن منابع بالا و سخت افزار قدرتمند کمک می کنند منابع خوبی در اختیار پروژه قرار بگیرد و عموما در زمان های پیک مصرف تا جای ممکن درخواست به ایده آل ترین شکل ممکن پردازش شوند.
تغییرات را مرحلهای انجام دهید:
یکی از اشتباهات رایج هنگام بهینه سازی سایت وردپرسی این است که چندین تغییر مختلف به صورت همزمان انجام شود. برای مثال ممکن است مدیر سایت در یک روز چند افزونه را حذف کند، سیستم کش را تغییر دهد، نسخه PHP را ارتقا دهد، تنظیمات دیتابیس را تغییر دهد و چند قابلیت دیگر را نیز غیرفعال کند.
در چنین شرایطی اگر بعد از انجام این تغییرات مصرف سی پیو کاهش پیدا کند یا سرعت سایت بهتر شود، مشخص نیست دقیقا کدام تغییر باعث بهبود عملکرد شده است. از طرف دیگر اگر سایت دچار خطا، کندی یا ناسازگاری شود نیز پیدا کردن عامل اصلی مشکل بسیار سخت تر خواهد شد.
برای همین بهتر است بهینه سازی سایت به صورت مرحله ای انجام شود. قبل از شروع تغییرات، وضعیت فعلی سایت را ثبت کنید. میزان مصرف منابع، زمان پاسخگویی سرور، تعداد Query های دیتابیس، تعداد پردازش ها و سرعت صفحات مهم سایت می توانند معیارهای مناسبی برای مقایسه باشند.
بعد از ثبت وضعیت اولیه، فقط یک تغییر انجام دهید و سپس دوباره همان موارد را بررسی کنید. برای مثال اگر یک افزونه سنگین را غیرفعال می کنید، قبل و بعد از غیرفعال کردن آن میزان مصرف منابع و سرعت سایت را مقایسه کنید.
اگر نتیجه مثبت بود و مشکل جدیدی در سایت ایجاد نشد، می توانید آن تغییر را حفظ کنید و سپس سراغ مرحله بعدی بروید. اگر هم مصرف منابع تغییری نکرد یا سایت دچار مشکل شد، خیلی راحت تر می توان همان تغییر را بررسی یا به حالت قبل بازگرداند.
این موضوع مخصوصا در سایت های فروشگاهی اهمیت بیشتری دارد، زیرا ممکن است یک تغییر در ظاهر باعث افزایش سرعت سایت شود اما در بخش هایی مانند سبد خرید، پرداخت، حساب کاربری یا ثبت سفارش مشکل ایجاد کند. بنابراین بعد از هر تغییر بهتر است بخش های مهم سایت نیز بررسی شوند.
همچنین بهتر است نتایج هر مرحله را یادداشت کنید. برای مثال مشخص کنید قبل از تغییر مصرف سی پیو چه میزان بوده، چه تغییری انجام شده و بعد از آن چه نتیجه ای مشاهده شده است. با این روش بعد از چند مرحله بهینه سازی دقیقا مشخص خواهد بود کدام اقدامات بیشترین تاثیر را روی کاهش مصرف منابع داشته اند.
انجام مرحله ای تغییرات کمک می کند تصمیم گیری براساس نتیجه واقعی انجام شود و از اعمال تنظیماتی که تاثیر مشخصی روی عملکرد سایت ندارند جلوگیری شود. در نهایت نیز اگر مشکلی ایجاد شود، پیدا کردن علت و بازگرداندن سایت به وضعیت پایدار بسیار ساده تر خواهد بود.
چک لیست کاهش مصرف منابع وردپرس:
اگر مصرف CPU، RAM یا سایر منابع هاست سایت وردپرسی شما بالا رفته است، موارد زیر را به ترتیب بررسی کنید:
افزونه های غیرضروری، تکراری و بلااستفاده را حذف کنید.
افزونه هایی که پردازش سنگین، کرانجاب یا درخواست AJAX زیادی ایجاد می کنند شناسایی کنید.
از قالب سبک و بهینه استفاده کنید.
تعداد فایل های CSS و JavaScript و درخواست های اضافی قالب را بررسی کنید.
سیستم کش صفحه را روی سایت فعال کنید.
در صورت پشتیبانی هاست، ردیس کش را فعال و بررسی کنید.
دیتابیس وردپرس را از اطلاعات غیرضروری و جداول باقی مانده پاکسازی کنید.
WP-Cron را بررسی کنید و کرانجاب های پرتکرار یا سنگین را مدیریت کنید.
درخواست های زیاد به admin-ajax.php و Heartbeat API را بررسی کنید.
از نسخه مناسب و پشتیبانی شده PHP استفاده کنید.
تصاویر سایت را قبل از بارگذاری فشرده و با ابعاد مناسب استفاده کنید.
در صورت امکان تصاویر را با فرمت WebP یا AVIF ارائه کنید.
تعداد Thumbnail های غیرضروری وردپرس، قالب و افزونه ها را کاهش دهید.
Access Log سایت را برای شناسایی Bot ها و درخواست های پرتکرار بررسی کنید.
برای مسیرهای حساس مانند ورود، جستجو و API در صورت نیاز Rate Limit اعمال کنید.
درخواست های غیرعادی به wp-login.php و xmlrpc.php را بررسی کنید.
سایت های ووکامرسی را جداگانه از نظر محصولات متغیر، سشن ها، Scheduled Actions و درخواست های سنگین بررسی کنید.
افزونه های جانبی غیرضروری ووکامرس را حذف کنید.
در صفحات ساخته شده با المنتور از ویجت ها و المان های غیرضروری استفاده نکنید.
صفحات دارای DOM بسیار بزرگ و تعداد زیاد درخواست را بهینه کنید.
درخواست های خارجی قالب و افزونه ها را بررسی و موارد غیرضروری را حذف کنید.
API های خارجی کند یا پرتکرار را شناسایی کنید.
بکاپ گیری را در ساعات کم ترافیک سایت انجام دهید.
اسکن های امنیتی کامل را بیش از حد اجرا نکنید.
ویجت ها و گزارش های غیرضروری پیشخوان وردپرس را محدود کنید.
Crawl شدن بیش از حد URL های جستجو و فیلتر توسط Bot ها را کنترل کنید.
تغییرات بهینه سازی را مرحله ای انجام دهید و چند تغییر را همزمان اعمال نکنید.
هاستی انتخاب کنید که منابع آن متناسب با حجم بازدید و نوع پروژه شما باشد.
در نهایت هدف این نیست که تمام قابلیت های سایت را غیرفعال کنید؛ بلکه باید پردازش های غیرضروری، پرتکرار و سنگین را پیدا کنید و منابع سرور را برای بخش هایی که واقعا مورد نیاز کاربران هستند خالی نگه دارید.
نتیجه گیری:
کاهش مصرف منابع در وردپرس معمولا با انجام یک تغییر خاص اتفاق نمی افتد. در بیشتر سایت ها مجموعه ای از عوامل مانند افزونه های سنگین، درخواست های زیاد دیتابیس، پردازش های پس زمینه، درخواست های ربات ها، تنظیمات نامناسب کش و حتی زمان اجرای بکاپ یا اسکن امنیتی در کنار هم باعث افزایش مصرف منابع می شوند.
به همین دلیل بهترین روش این است که به جای ارتقای سریع هاست، ابتدا مشخص کنید منابع دقیقا در چه بخشی مصرف می شوند. نمودار مصرف هاست، Access Log، Query Monitor، گزارش های PHP و ابزارهای بررسی سرعت می توانند کمک کنند تا به جای حدس زدن، عامل اصلی مصرف بالا را پیدا کنید.
همچنین فراموش نکنید که بهینه سازی یک فرآیند دائمی است. سایتی که امروز عملکرد مناسبی دارد ممکن است چند ماه بعد با افزایش تعداد محصولات، کاربران، سفارش ها، افزونه ها یا بازدیدکنندگان دوباره به بررسی و بهینه سازی نیاز داشته باشد.
تغییرات را مرحله ای انجام دهید و بعد از هر تغییر نتیجه را اندازه گیری کنید. با این روش مشخص می شود کدام اقدام واقعا روی کاهش مصرف منابع تاثیر داشته و کدام تغییر فقط پیچیدگی بیشتری به سایت اضافه کرده است.
در نهایت یک سایت وردپرسی بهینه زمانی به بهترین عملکرد خود می رسد که کدنویسی و افزونه های مناسب، کش صحیح، دیتابیس سالم، پردازش های کنترل شده و هاست متناسب با پروژه در کنار یکدیگر قرار بگیرند. هدف فقط پایین آوردن عدد مصرف CPU و RAM نیست؛ هدف این است که سایت در زمان افزایش بازدید نیز سریع، پایدار و در دسترس باقی بماند.
در نهایت بعد از انجام تمام مراحل که احساس می کنید برای کاهش مصرف منابع مفید بوده است ولی اگر همچنان قصد دارید میزان منابع آزاد بیشتری را برای پروژه های خود داشته باشید باید به ارتقا هاست خود هم فکر کنید.
عموما هاست های قدرتمند می توانند عملکرد خوبی را برای پروژه به همراه داشته باشند به شرطی اینکه انتخاب و خرید یک هاست قدرتمند سرپوشی بر مشکلات سایت نشود و حتما نسبت به بررسی مواردی که گفته شد اقدام کنید.












