افزایش سرعت سایت‌های فروشگاهی وردپرس


وندا نوژن .

برای آنکه سایت فروشگاهی وردپرسی شما عملکرد بهینه داشته باشد، در درجه اول باید هاست مناسبی را انتخاب کنید (مثلا هاست‌های اشتراکی از این جهت چندان مناسب نیستند که منابع کمی دارند و همان را هم بین تعداد زیادی کاربر تقسیم می‌کنند؛ در حالی که سایت‌ها فروشگاهی به خصوص در زمان ترافیک بالا منابع زیادی را می‌بلعند) و پس از آن باید از قالب مناسب و استاندارد فروشگاهی استفاده کنید. البته این‌ها صرفا مهمترین شروط لازم هستند و نه قطعا کافی.

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

1) فارسی‌سازی وردپرس

برای فارسی‌سازی و تبدیل تاریخ به هجری شمسی، از افزونه WP Shamsi استفاده کنید. چون هم سبک است و هم عملیات فارسی‌سازی را بدون تغییر در هسته وردپرس انجام می‌دهد و ضمنا برخلاف افزونه‌های مشابه کدهای اضافی و غیرضروری‌ای ندارد که بر سرعت وردپرس تاثیر سوء بگذارد.

2) غیرفعال‌سازی یا تعدیل Heartbeat در وردپرس

از نسخه 3.6 وردپرس به بعد، قابلیتی در آن تعبیه و معرفی شد به اسم Heartbeat API. این قابلیت اجازه می‌دهد که به محض ورود به پیشخوان یا پنل مدیریت وردپرس، بین مرورگر شما و سرور ارتباط برقرار بشود و هر 15 تا 60 ثانیه تبادل اطلاعات (دیتا) اتفاق بیفتد. خودِ این نام‌گذاری (ضربان قلب) گویای عملکرد آن است. از جمله کارکردهای این قابلیت اینست که مثلا نوشته شما پس از مدتی به طور خودکار به صورت پیش‌نویس ذخیره می‌شود، رکورد تغییرات یک پست (revisions) باقی می‌ماند یا هنگام اصلاح یک پست، نوشته‌تان به روی سایر نویسندگان قفل می‌شود تا تداخل پیدا نشود و غیره. فارغ از این جنبه‌های مثبت اما این تبادل دائمی اطلاعات به سرور فشار می‌آورد. بنابراین می‌توانید این قابلیت را کلا غیرفعال کنید یا مدت زمان تبادل اطلاعات را افزایش دهید. برای اینکار می‌توانید از افزونه ساده Heartbeat Control استفاده کنید.

3) غیرفعال‌سازی Cron Job

یکی از فایل‌هایی که بخصوص در زمان افزایش ترافیک سایت در یک بازه زمانی کوتاه سهم زیادی در مصرف منابع سرور (بخصوص سی‌پی‌یو) دارد، wp-cron.php است. اصولا هر صفحه‌ای که لود می‌شود، به این فایل فراخوان می‌دهد که اجرا بشود و وظایفی را که در دستور کار قرار دارند انجام بدهد. وظایفی مثل انتشار پست‌های زمان‌بندی‌شده، بروزرسانی افزونه‌ها و قالب سایت، پاکسازی خودکار کش، ارسال نوتیفیکیشن ایمیل و غیره، همگی با فراخوان به این فایل انجام می‌شوند.

بنابراین به زبان ساده wp-cron.php مدام از وردپرس می‌پرسد که آیا کاری برای انجام دادن هست یا نه. وردپرس هم باید فهرست وظایف را چک کند و اگر کاری نبود (که در 99 درصد موارد هم نیست!) پاسخ بدهد که: فعلا خیر! بعدا دوباره بپرس! و این چرخه مدام تکرار می‌شود.

در سایت‌هایی با ترافیک پایین چنین قابلیتی خوب است، اما در سایت‌هایی با ترافیک بالا یا در شرایط جهش ترافیک، باعث افزایش شدید مصرف منابع سرور (بخصوص سی‌پی‌یو) و متقابلا کاهش شدید سرعت لود سایت می‌شود.

بنابراین بهترین کار این است که فعالیت روتین و پیش‌فرض wp-cron.php را متوقف و در عوض فقط بسته به نیازتان فعال کنید. برای این کار خیلی ساده کد زیر را به انتهای فایل wp-config.php اضافه کنید:

define('DISABLE_WP_CRON', 'true');

با این کار دیگر هیچ‌کدام از وظایفی که بالاتر گفتیم به طور خودکار انجام نخواهند شد. اما اگر قصد ندارید اجرای wp-cron.php را برای همیشه متوقف کنید و در عوض می‌خواهید به فرض مثال دو بار در روز (هر 12 ساعت) وظایف چک شوند، باید از کنترل پنل وارد بخش Cron jobs شوید و در تنظیمات جدول مربوطه، عبارت twice per day را انتخاب کنید (بر این مبنا سایر فیلدهای جدول به شکل خودکار پر خواهند شد). در آخر باید دستور زیر را بنویسید و Add New Cron Job را بزنید (به جای yourdomain.com آدرس سایت خود را بنویسید).

wget -q -O - https://yourdomain.com/wp-cron.php?doing_wp_cron >/dev/null 2>&1


4) فشرده‌سازی Gzip

فشرده‌سازی Gzip یا Gzip Compression یک تکنولوژی است که داده‌ها را قبل از ارسال به مرورگر کاربر فشرده می‌کند و بعد مرورگر به محض دریافت داده‌های فشرده‌شده، آن‌ها را از حالت فشرده خارج می‌کند و نمایش می‌دهد. به این ترتیب با کاهش مدت زمان دانلود داده‌ها، سایت شما سریع‌تر می‌شود. برای اینکه ببینید آیا هاست شما این قابلیت را فعال کرده یا نه، می‌توانید سایت خود را از اینجا یا اینجا تست کنید. اگر فعال بود که چه بهتر، اگر نه می‌توانید به صورت دستی آن را فعال کنید. مثلاً اگر سرور شما از نوع آپاچی است، کافی است که این کدها را در فایل htaccess (واقع در مسیر public_htm کنترل پنل) قرار دهید تا این قابلیت فعال شود.


5) بهینه‌سازی سایت با Autoptimize

در سایت شما کوهی از فایل‌های css و جاوا اسکریپت پراکنده وجود دارد که سرعت لود صفحات را پایین می‌آورد. در عوض افزونه Autoptimize تمام این استایل‌ها و اسکریپت‌های پراکنده را تجمیع و فشرده می‌کند. به غیر از این، استایل‌ها را به قسمت Head صفحه و اسکریپت‌ها را -به صورت اختیاری- به Footer انتقال می‌دهد. ضمنا با کوچک‌سازی یا minify کردن کدهای html، صفحات را سبک می‌کند. نهایتا اینکه قابلیت مدیریت کش سایت و قابلیت‌های دیگری را به شما می‌دهد و خلاصه استفاده از آن به طور محسوسی سرعت لود سایت را بهبود می‌بخشد.

6) تبدیل تصاویر به فرمت WebP

قاعدتا یک سایت فروشگاهی از تعداد زیادی تصویر محصول استفاده می‌کند. هر چه تعداد تصاویر و حجم آن‌ها از یک طرف و تعداد کاربران آنلاین از طرف دیگر بالاتر باشد، تعداد درخواست‌ها به سرور و فشار روی آن برای لود تصاویر افزایش پیدا می‌کند. بنابراین اگر از CDN استفاده نمی‌کنید، حداقل باید دنبال راهی باشید که حجم فایل‌ها را بدون از دست دادن کیفیتشان تا حد امکان کاهش بدهید. یکی از این راه‌ها تبدیل آن‌ها به فرمت WebP است.

در نسخه جدید وردپرس (5.8) برخلاف نسخه‌های قبلی امکان آپلود فایل‌هایی با فرمت WebP گنجانده شده. ولی مساله این است که باید تمام عکس‌های تاکنونی را یکجا به این فرمت تبدیل کنید و ضمنا مطمئن باشید که چنانچه به دلیل قدیمی بودن مرورگرِ کاربران امکان نمایش فایل‌های WebP برایشان مقدور نباشد، به صورت خودکار تصاویر اصلی با فرمت jpg، png و غیره به آن‌ها نمایش داده شوند.

افزونه عالی WebP Express دقیقا تمام این خصویات را با هم دارد.


7) افزونه سئوی Rank Math

برای بهینه‌سازی موتور جستجو (SEO) و کمک به اینکه محتوای سایت شما هرچه بیشتر و بهتر در نتایج جستجوی گوگل نمایش داده شود، عموماً از افزونه معروف Yoast SEO استفاده می‌شود. اما در مقابل، افزونه دیگری به نام Rank Math هست که نه فقط تمام قابلیت‌های Yoast و چه بسا بسیار بیش از آن را دارد، بلکه در قیاس با Yoast که بیشتر اسم و رسم در کرده، هم با کدهای به مراتب کمتری نوشته شده، هم حجمش به طور فاحشی کمتر است، هم از حافظه کمتری استفاده می‌کند و هم سرعت لود بالاتری دارد و ضمن سازگاری کامل با ووکامرس، واقعا نتایج رضایت‌بخشی در زمینه سئو به شما می‌دهد.


8) لود تنبل

لود تنبل یا Lazy Load قابلیتی است که باعث می‌شود موقع مراجعه کاربر به سایت شما، ابتدا محتوای قسمت اصلی و هدر سایت به مخاطب نمایش داده شد و بعد وقتی کاربر به پایین صفحه اسکرول کرد، باقی عکس ها و ویدیوها لود ‌شوند. برای این مورد می‌توانید از افزونه Lazy Load استفاده کنید.

9) غیرفعال‌سازی یک اسکریپت مرتبط با سبد خرید

اگر تا به حال از ابزارهای تست سرعت مثل GTMetrix برای سایت فروشگاهی خود استفاده کرده باشید، یکی از مشکلاتی که به احتمال زیاد با آن برخورد کرده‌اید، زمان طولانی لود wc-ajax=get_refreshed_fragments بوده است.

عبارت wc-ajax=get_refreshed_fragments یک اسکریپت است که هر بار با ورود کاربر به یک صفحه، محتویات سبد خرید او را بررسی و بروزرسانی می‌کند. یکی از مشکلات این اسکریپت این است که در تمام صفحات بی‌ربط به محصولات (مثلا درباره ما، تماس و غیره) هم اجرا می‌شود. همه این‌ها روی هم رفته می‌تواند با افزایش ترافیک سایت به یک معضل تبدیل بشود و سرعت لود سایت را به شدت پایین بیاورد. منتها برای رفع این مشکل می‌توانید خیلی ساده افزونه Disable Cart Fragments را نصب کنید.


10) تنظیمات ووکامرس

به قسمت «پیکربندی» ووکامرس بروید، وارد تب «پیشرفته» بشوید و در زیر آن روی گزینه «امکانات» بزنید و مشابه تصویر، تیک گزینه زیر را بردارید و ذخیره تغییرات را بزنید (این گزینه صرفا اطلاعات تحیلی را برای استفاده خودِ ووکامرس ارسال می‌کند).