SN.
همه نوشته ها
وردپرس۱۶ مرداد ۱۴۰۵۱۵ دقیقه

چرا سایت المنتوری کند می شود؟ ۱۰ راهکار عملی برای افزایش سرعت بدون خراب شدن طراحی

اگر سایت المنتوری بعد از مدتی کند شده، قبل از نصب یک افزونه بهینه سازی دیگر بهتر است علت واقعی مشکل را پیدا کنید. در این راهنما ۱۰ موردی را توضیح می دهم که معمولا برای افزایش سرعت WordPress و Elementor بررسی می کنم.

بررسی سرعت و بهینه سازی یک سایت وردپرس و المنتور روی لپ تاپ

کند شدن یک سایت Elementor معمولا یک شبه اتفاق نمی افتد. پروژه در ابتدا سریع است، بعد چند صفحه جدید ساخته می شود، چند افزونه اضافه می شود، تصاویر بیشتری وارد سایت می شوند و کم کم زمانی می رسد که صفحه ای که قبلا سریع باز می شد چند ثانیه بیشتر برای نمایش کامل زمان می خواهد.

در این شرایط اولین واکنش خیلی ها نصب یک افزونه Cache یا Optimization جدید است. گاهی این کار کمک می کند، اما اگر دلیل اصلی کندی جای دیگری باشد فقط یک لایه جدید به پروژه اضافه کرده ایم.

وقتی روی یک سایت WordPress و Elementor کار می کنم، قبل از هر بهینه سازی سعی می کنم بفهمم کندی دقیقا از کجا می آید. ممکن است مشکل تصویر اصلی صفحه باشد، ممکن است سرور دیر پاسخ دهد، شاید یک افزونه در تمام صفحات Script غیرضروری اجرا کند یا شاید ساختار صفحه آن قدر پیچیده شده باشد که مرورگر برای نمایش آن کار زیادی انجام دهد.

در ادامه ۱۰ موردی را توضیح می دهم که معمولا قبل از تصمیم های سنگین تر بررسی می کنم.

۱. قبل از هر تغییری سرعت را اندازه می گیرم

اولین قدم من حذف فایل یا نصب افزونه نیست. ابتدا وضعیت فعلی صفحه را ثبت می کنم تا بعدا بدانم تغییرات واقعا موثر بوده اند یا فقط احساس می کنم سایت سریع تر شده است.

برای بررسی اولیه معمولا PageSpeed Insights و ابزارهای مرورگر اطلاعات خوبی می دهند. در کنار امتیاز کلی، سه معیار اصلی Core Web Vitals اهمیت بیشتری دارند.

معیار LCP نشان می دهد بزرگ ترین بخش مهم صفحه با چه سرعتی نمایش داده می شود. معیار INP واکنش صفحه به تعامل کاربر را بررسی می کند و معیار CLS میزان جابه جایی ناخواسته عناصر را نشان می دهد.

هدف خوب برای تجربه کاربری معمولا این است که مقدار LCP حدود ۲.۵ ثانیه یا کمتر، مقدار INP کمتر از ۲۰۰ میلی ثانیه و مقدار CLS کمتر از ۰.۱ باشد.

اما فقط دیدن عدد کافی نیست. مهم تر این است که بفهمیم چرا عدد ضعیف شده است.

اگر تصویر Hero عامل اصلی LCP باشد، نصب یک افزونه Database Optimization احتمالا مشکل اصلی را حل نمی کند. اگر پاسخ اولیه سرور کند باشد، فشرده کردن چند فایل CSS تاثیر محدودی خواهد داشت.

برای همین قبل از شروع، مشکل را دسته بندی می کنم: سرور، تصویر، Font، JavaScript، DOM، Plugin یا Cache.

۲. قبل از دست زدن به Elementor، وضعیت سرور را بررسی می کنم

گاهی توسعه دهنده ساعت ها فایل های Front-end را بهینه می کند در حالی که خود سرور برای تولید صفحه زمان زیادی نیاز دارد.

اگر زمان پاسخ اولیه بالا باشد، بهتر است مواردی مثل نسخه PHP، منابع Hosting، Queryهای سنگین، Database، Object Cache و موقعیت جغرافیایی سرور بررسی شوند.

یک سایت سبک هم روی Hosting بسیار ضعیف می تواند کند باشد. برعکس، ارتقای سرور هم نباید تبدیل به راهی برای پنهان کردن کد یا Queryهای مشکل دار شود.

در فروشگاه های WooCommerce این موضوع مهم تر است چون بعضی صفحات و عملیات ها به Database و پردازش سمت سرور وابستگی بیشتری دارند.

قبل از اینکه Layout را مقصر بدانم، مطمئن می شوم Backend خودش مانع اصلی نیست.

۳. تصویر اصلی صفحه را اولین متهم در کندی Hero می دانم

در بسیاری از سایت هایی که بررسی کرده ام، بزرگ ترین عنصر بالای صفحه یک تصویر بزرگ است. همین تصویر می تواند تاثیر زیادی روی LCP داشته باشد.

برای تصویر Hero چند مورد ساده اما مهم را بررسی می کنم:

  • ابعاد فایل خیلی بزرگ تر از فضای نمایش نباشد.
  • تصویر با فرمت مناسب و حجم منطقی ذخیره شده باشد.
  • مرورگر از ابتدا ابعاد یا نسبت تصویر را بداند.
  • تصویر مهم بالای صفحه بی دلیل Lazy Load نشده باشد.
  • نسخه موبایل مجبور به دانلود تصویر بسیار بزرگ Desktop نباشد.

استفاده از Lazy Loading ابزار خوبی است، اما برای هر تصویری مناسب نیست. تصویری که کاربر بدون Scroll در ابتدای صفحه می بیند معمولا باید سریع در اختیار مرورگر قرار بگیرد.

در مقابل، تصاویر بخش های پایین صفحه معمولا گزینه های بسیار بهتری برای Lazy Loading هستند.

اگر فقط یک تغییر برای سریع تر شدن صفحه اصلی فرصت داشته باشم، تصویر Hero یکی از اولین چیزهایی است که بررسی می کنم.

۴. تنظیمات Performance خود Elementor را بررسی می کنم

قبل از اضافه کردن ابزار جدید، قابلیت هایی که خود Elementor در اختیار پروژه قرار داده را بررسی می کنم.

بسته به نسخه و ساختار سایت، گزینه هایی مثل Optimized Image Loading، Lazy Load Background Images، Optimized Gutenberg Loading و Inline Font Icons می توانند بخشی از بار اضافی صفحه را کاهش دهند.

قابلیت Element Caching هم برای بعضی عناصر ثابت می تواند مفید باشد، اما نباید بدون بررسی برای محتوای Dynamic فعال شود.

نکته مهم برای من این است که هیچ گزینه ای را فقط به دلیل اینکه نام آن «Performance» است روشن نمی کنم.

بعد از فعال کردن هر قابلیت مهم، صفحات اصلی سایت را دوباره تست می کنم. این موضوع مخصوصا در سایت هایی که Widget سفارشی، Dynamic Tags یا افزونه های جانبی Elementor دارند مهم است.

بهینه سازی خوب باید قابل بازگشت و قابل تست باشد.

۵. ساختار پیچیده صفحه و DOM اضافی را کم می کنم

گاهی مشکل اصلی نه تصویر است و نه افزونه؛ خود ساختار صفحه بیش از حد پیچیده شده است.

در پروژه های قدیمی Elementor ممکن است برای ایجاد یک فاصله یا Alignment ساده چند Section، Column و Inner Section داخل هم قرار گرفته باشند.

هر Wrapper جدید یک عنصر دیگر به DOM اضافه می کند. چند عنصر اضافه مشکل بزرگی نیست، اما وقتی این الگو در تمام صفحه تکرار شود تعداد عناصر می تواند خیلی زیاد شود.

در طراحی های جدیدتر ترجیح می دهم از Containerها و Flexbox به شکل منطقی استفاده کنم تا برای یک Layout ساده نیازی به چند لایه تو در تو نباشد.

البته هدف من رسیدن به کمترین تعداد ممکن DOM نیست. اگر برای خوانایی ساختار یا رفتار Responsive به Wrapper نیاز باشد آن را حذف نمی کنم.

هدف حذف ساختارهایی است که هیچ مسئولیت واقعی ندارند.

۶. افزونه های تکراری را پیدا می کنم، نه اینکه فقط تعداد افزونه ها را بشمارم

یکی از جمله هایی که زیاد شنیده می شود این است که «هرچه تعداد افزونه کمتر باشد سایت سریع تر است». واقعیت کمی پیچیده تر است.

یک افزونه کوچک که در تمام صفحات Query یا JavaScript سنگین اجرا می کند می تواند از چند افزونه سبک تاثیر بیشتری داشته باشد.

برای همین بیشتر از تعداد Pluginها به مسئولیت آن ها توجه می کنم.

اگر یک افزونه برای Popup نصب شده، یک Add-on دیگر هم Popup دارد و خود Elementor Pro هم همان قابلیت را ارائه می دهد، احتمال تکرار مسئولیت وجود دارد.

همین اتفاق ممکن است برای Form، Slider، Optimization، SEO، Analytics یا Custom Widgetها هم رخ دهد.

قبل از حذف هر افزونه بررسی می کنم:

  • آیا Feature آن جای دیگری استفاده می شود؟
  • آیا حذف آن داده ای را از بین می برد؟
  • آیا CSS یا JavaScript آن در کل سایت Load می شود؟
  • آیا جایگزین فعلی واقعا همان قابلیت را کامل پوشش می دهد؟

پاک کردن تصادفی Pluginها بهینه سازی نیست. کم کردن Dependencyهای غیرضروری بهینه سازی است.

۷. فونت ها و آیکن ها را دست کم نمی گیرم

در سایت های فارسی این بخش گاهی تاثیر زیادی دارد.

ممکن است یک Font فارسی با شش یا هفت وزن مختلف وارد سایت شده باشد، در حالی که طراحی فقط از سه وزن استفاده می کند. اگر هر وزن فایل جدا داشته باشد، مرورگر فایل هایی را دانلود می کند که شاید هیچ وقت استفاده نشوند.

برای Font معمولا این موارد را بررسی می کنم:

  • فقط وزن های مورد استفاده Load شوند.
  • Fontهای خارجی غیرضروری حذف شوند.
  • Font اصلی مسیر ثابت و قابل Cache داشته باشد.
  • نحوه نمایش Font هنگام Load شدن باعث جابه جایی شدید متن نشود.

در مورد Iconها هم همین منطق وجود دارد. اگر پروژه فقط چند آیکن ساده استفاده می کند، بارگذاری یک کتابخانه بزرگ فقط برای همان چند مورد همیشه بهترین انتخاب نیست.

گاهی استفاده از SVGهای محدود یا قابلیت Inline Font Icons می تواند وابستگی اضافی را کمتر کند.

۸. فایل های JavaScript و ابزارهای جانبی را صفحه به صفحه بررسی می کنم

یکی از چیزهایی که خیلی راحت از چشم پنهان می شود Third-party Scriptها هستند.

چت آنلاین، نقشه، سیستم آمار، Pixel تبلیغاتی، ویدیو، فرم خارجی و ابزارهای Marketing هرکدام ممکن است JavaScript خودشان را به صفحه اضافه کنند.

مشکل زمانی بیشتر می شود که Script در تمام سایت Load شود اما فقط یک صفحه واقعا به آن نیاز داشته باشد.

برای کدهای اختصاصی هم همین قانون را دارم. اگر یک فایل فقط برای Checkout نوشته شده، Blog نباید هزینه دانلود و اجرای آن را بدهد.

تا جای ممکن Assetهای Feature محور را فقط در همان صفحاتی Enqueue می کنم که مصرف می شوند.

در عین حال Scriptهای Third-party را کورکورانه Delay نمی کنم. بعضی Scriptها برای Analytics، Consent، Payment یا عملکرد اصلی Feature وابستگی زمانی دارند و تغییر نحوه Load آن ها باید تست شود.

۹. تنظیم Cache را بر اساس نوع صفحه انجام می دهم

استفاده از Cache می تواند تاثیر بسیار خوبی روی سرعت داشته باشد، اما تنظیم یکسان برای تمام صفحات همیشه مناسب نیست.

صفحه مقاله یا درباره ما معمولا محتوای ثابت تری دارد و Cache کردن آن ساده تر است.

اما در WooCommerce شرایط متفاوت می شود. سبد خرید، Checkout، حساب کاربری و بخش هایی که اطلاعات مخصوص هر کاربر دارند نباید مثل یک Landing Page ثابت مدیریت شوند.

برای سایت فروشگاهی بررسی می کنم که سیستم Cache با Cart، Checkout، Login و Sessionهای WooCommerce تداخل نداشته باشد.

در بعضی پروژه ها Object Cache هم می تواند Queryهای تکراری را سبک تر کند، مخصوصا زمانی که سایت فروشگاهی یا محتوایی بزرگ است. اما این مورد هم باید با ساختار واقعی سایت سازگار باشد.

همچنین استفاده از CDN برای فایل های Static می تواند فاصله شبکه تا کاربر را کمتر کند، مخصوصا اگر بازدیدکنندگان سایت از مناطق جغرافیایی مختلف باشند.

هدف من فعال کردن تمام انواع Cache نیست؛ هدف این است که هر Cache در جایی استفاده شود که داده قدیمی یا رفتار اشتباه ایجاد نکند.

۱۰. بعد از بهینه سازی، دوباره همه چیز را تست می کنم

بخشی که گاهی فراموش می شود همین مرحله است.

اگر امتیاز PageSpeed بهتر شود اما Slider از کار بیفتد، Checkout مشکل پیدا کند یا Font سایت چند لحظه به شکل اشتباه نمایش داده شود، بهینه سازی موفقی انجام نشده است.

بعد از تغییرات مهم معمولا چند مسیر را دوباره بررسی می کنم:

  • صفحه اصلی را روی Desktop و Mobile تست می کنم.
  • صفحات مهم ورودی از Google را بررسی می کنم.
  • فرم ها و Modalها را اجرا می کنم.
  • در فروشگاه، Cart و Checkout را تست می کنم.
  • Variationهای محصول را تغییر می دهم.
  • وضعیت Logged-in و Logged-out را در صورت نیاز مقایسه می کنم.
  • خطاهای Console را بررسی می کنم.
  • دوباره معیارهای Performance را اندازه می گیرم.

در پروژه های مهم ترجیح می دهم تغییرات بزرگ ابتدا در Staging بررسی شوند و بعد وارد سایت اصلی شوند.

برای افزایش سرعت چه کارهایی را معمولا انجام نمی دهم؟

بعضی روش ها در ظاهر سریع هستند، اما در پروژه واقعی می توانند دردسر بیشتری ایجاد کنند.

فایل های CSS و JavaScript را تصادفی Disable نمی کنم

اگر ندانم یک فایل متعلق به چه Featureای است، حذف آن بیشتر شبیه آزمایش شانسی است تا Optimization.

ابتدا Dependency را پیدا می کنم و بعد درباره حذف یا Conditional Loading تصمیم می گیرم.

برای رسیدن به امتیاز ۱۰۰ طراحی را قربانی نمی کنم

امتیاز ابزارهای Performance مفید است، اما هدف نهایی کاربر واقعی است.

حذف Font برند، تصویر اصلی یا یک قابلیت مهم فقط برای بهتر شدن یک عدد همیشه تصمیم درستی نیست.

گاهی تفاوت بین امتیاز بسیار خوب و امتیاز کامل ارزش آسیب زدن به Design یا Conversion را ندارد.

چند افزونه Cache را همزمان روی هم نمی گذارم

وقتی چند سیستم Optimization یک فایل را Minify، Delay یا Cache می کنند، پیدا کردن علت مشکل بسیار سخت تر می شود.

ترجیح می دهم مسئولیت هر لایه مشخص باشد.

تمام عناصر موبایل و دسکتاپ را جداگانه Duplicate نمی کنم

گاهی برای حل Responsive، یک بخش کامل برای Desktop ساخته می شود و نسخه دوم همان بخش برای Mobile ایجاد می شود و هر کدام در دستگاه دیگر Hidden می شوند.

این روش در بعضی شرایط خاص کاربرد دارد، اما استفاده زیاد از آن می تواند DOM و Assetهای صفحه را سنگین تر کند.

در بیشتر مواقع ترجیح می دهم ابتدا همان Component را واقعا Responsive کنم.

اگر فقط ۱۵ دقیقه وقت داشته باشم، از کجا شروع می کنم؟

اگر یک سایت Elementor کند به من داده شود و زمان محدودی برای بررسی اولیه داشته باشم، این ترتیب را دنبال می کنم:

۱. صفحه را با PageSpeed Insights بررسی می کنم.

۲. عنصر اصلی LCP و حجم تصویر Hero را پیدا می کنم.

۳. زمان پاسخ سرور را بررسی می کنم.

۴. افزونه ها و Scriptهای Third-party را مرور می کنم.

۵. تعداد Fontها و وزن های استفاده شده را بررسی می کنم.

۶. تنظیمات Performance خود Elementor را می بینم.

۷. ساختار صفحه و Wrapperهای غیرضروری را بررسی می کنم.

این بررسی کوتاه معمولا جهت ادامه کار را خیلی واضح تر می کند.

آیا Elementor ذاتا کند است؟

به نظر من پاسخ ساده «بله» یا «خیر» برای این سوال مفید نیست.

خود Elementor برای ارائه Visual Editing به کد و ساختار بیشتری نسبت به یک صفحه HTML بسیار ساده نیاز دارد. اما عملکرد نهایی یک سایت فقط به Page Builder وابسته نیست.

عواملی مثل Hosting، قالب، تصاویر، افزونه ها، Scriptهای جانبی، Fontها، ساختار صفحه و Cache همگی در نتیجه نهایی نقش دارند.

یک سایت Elementor که درست ساخته و نگهداری شده باشد می تواند تجربه کاربری خوبی داشته باشد، در حالی که یک سایت Custom هم با تصاویر سنگین و JavaScript ضعیف می تواند کند باشد.

آیا نصب افزونه افزایش سرعت کافی است؟

در بعضی سایت ها یک افزونه Cache خوب می تواند تغییر محسوسی ایجاد کند، اما آن را درمان همه مشکلات نمی دانم.

اگر صفحه یک تصویر چند مگابایتی داشته باشد یا پنج سرویس Third-party همزمان JavaScript سنگین اجرا کنند، Cache به تنهایی تمام مشکل را حل نمی کند.

اول Bottleneck را پیدا می کنم و بعد ابزار مناسب همان مشکل را انتخاب می کنم.

آیا برای افزایش سرعت باید تصاویر را خیلی بی کیفیت کنیم؟

خیر. هدف بهینه سازی تصویر پیدا کردن تعادل مناسب بین کیفیت، ابعاد و حجم فایل است.

یک تصویر ۳۰۰۰ پیکسلی برای فضایی که در نهایت با عرض ۷۰۰ پیکسل نمایش داده می شود معمولا منطقی نیست، اما فشرده سازی بیش از حد هم می تواند ظاهر حرفه ای سایت را خراب کند.

بهترین فایل، کوچک ترین فایل ممکن نیست؛ فایلی است که با کمترین حجم لازم کیفیت مورد نیاز طراحی را حفظ کند.

آیا Core Web Vitals مستقیما تضمین کننده رتبه بهتر است؟

خیر. تجربه صفحه فقط یکی از بخش های سئو است و محتوای مفید و مرتبط همچنان اهمیت اصلی را دارد.

اما سرعت و پایداری خوب صفحه باعث می شود کاربر تجربه بهتری داشته باشد و مشکلات فنی کمتری هنگام استفاده از سایت ایجاد شود. به همین دلیل من Performance را بخشی از کیفیت محصول می دانم، نه یک ترفند جداگانه برای Google.

جمع بندی

برای افزایش سرعت یک سایت Elementor معمولا هیچ دکمه جادویی وجود ندارد.

بهترین نتیجه زمانی به دست می آید که اول بفهمیم زمان و منابع صفحه دقیقا کجا مصرف می شوند و بعد همان بخش را اصلاح کنیم.

گاهی مشکل با بهینه سازی یک تصویر حل می شود. گاهی باید Pluginهای تکراری را کنار گذاشت. در پروژه دیگری ممکن است Hosting یا Scriptهای Third-party عامل اصلی باشند.

برای من هدف این نیست که Elementor را تا جای ممکن خالی کنم یا به هر قیمتی امتیاز ۱۰۰ بگیرم. هدف ساخت سایتی است که سریع باشد، ظاهرش خراب نشود، مدیر سایت بتواند آن را مدیریت کند و تغییرات بعدی هم پروژه را شکننده نکنند.

اگر بعد از هر تغییر بتوانیم دقیقا توضیح دهیم چه مشکلی را حل کرده ایم و نتیجه را دوباره اندازه بگیریم، بهینه سازی از مجموعه ای از حدس ها به یک فرایند قابل کنترل تبدیل می شود.

منابع رسمی برای بررسی بیشتر