
همه ی ما مقالات “نصب افزونه ی …… برای افزایش سرعت” را خوانده ایم. این روش ها گرچه مفیدند، اما اغلب به بهای اضافه کردن کدهای بیشتر و وابستگی به افزونه های متعدد تمام می شوند و تنها سطح مشکل را افزایش می دهند. سرعت واقعی وردپرس در بهینه سازی های عمیق تر و دستی نهفته است؛ تکنیک هایی که کنترل کامل عملکرد سایت را به دست شما می دهند.
اگر از نتایج افزونه های بهینه سازی خسته شده اید و آماده اید تا کمی دست هایتان را کثیف کنید، این ۱۰ تکنیک دستی و کمتر شناخته شده، سرعت سایت وردپرسی شما را به سطح جدیدی خواهد رساند.
۱. کنترل دقیق WordPress Heartbeat API
Heartbeat API یک قابلیت درونی وردپرس است که به مرورگر اجازه می دهد تا به طور مداوم با سرور در ارتباط باشد. این قابلیت برای کارهایی مثل ذخیره ی خودکار پیش نویس ها یا نمایش اعلانات لحظه ای مفید است، اما در پیشخوان مدیریت (و گاهی در خود سایت) می تواند با ارسال درخواست های مداوم AJAX (admin-ajax.php)، منابع سرور (CPU) را به شدت مصرف کند.
راه حل: به جای نصب افزونه، با افزودن چند خط کد به فایل functions.php قالب فرزند (Child Theme) خود، این قابلیت را هوشمندانه مدیریت کنید.
add_action( 'init', 'dw_stop_heartbeat', 1 );
function dw_stop_heartbeat() {
wp_deregister_script('heartbeat');
}
این کد به طور کامل آن را غیرفعال می کند. اگر به قابلیت های آن (مثلاً در ویرایشگر) نیاز دارید، می توانید آن را فقط در صفحات خاصی محدود کنید:
add_action( 'init', 'dw_heartbeat_settings' );
function dw_heartbeat_settings() {
global $pagenow;
// فقط در صفحه ویرایش پست و ساخت برگه فعال باشد
if ( 'post.php' != $pagenow && 'post-new.php' != $pagenow ) {
wp_deregister_script('heartbeat');
}
}
۲. بهینهسازی دیتابیس بدون افزونه (مستقیم از phpMyAdmin)
افزونه های پاک سازی پایگاه داده (دیتابیس) عالی هستند، اما اغلب داده های autoload را نادیده می گیرند. در جدول wp_options، برخی ردیف ها دارای گزینه ی autoload=yes هستند. این یعنی وردپرس این داده ها را در هر بار بارگذاری صفحه فراخوانی می کند، حتی اگر به آن ها نیازی نباشد. انباشت این داده ها توسط افزونه ها و پوسته های قدیمی، سایت را به شدت کند می کند.
راه حل:
- وارد phpMyAdmin در هاست خود شوید و دیتابیس سایتتان را انتخاب کنید.
- به جدول wp_options بروید.
- دستور SQL زیر را اجرا کنید تا بزرگ ترین داده هایی که به صورت خودکار بارگذاری می شوند را پیدا کنید:
SELECT option_name, LENGTH(option_value) AS option_value_length FROM wp_options WHERE autoload = 'yes' ORDER BY option_value_length DESC LIMIT 20;
ردیف های حجیم مربوط به افزونه هایی که دیگر استفاده نمی کنید را شناسایی کنید. با احتیاط فراوان، می توانید مقدار autoload آن ها را از yes به no تغییر دهید.
هشدار: قبل از هر تغییری در دیتابیس، حتما یک نسخه ی پشتیبان کامل تهیه کنید. تغییر گزینه های حیاتی وردپرس می تواند سایت شما را از کار بیندازد.
۳. بارگذاری انتخابی افزونهها (Selective Plugin Loading)
آیا می دانستید افزونه ی فرم تماس شما (مثلاً Contact Form 7) فایل های CSS و JS خود را در تمام صفحات سایت بارگذاری می کند، حتی اگر فرم فقط در صفحه ی “تماس با ما” باشد؟ این یک اتلاف منابع بزرگ است.
راه حل: با استفاده از کد زیر می توانید مشخص کنید که هر افزونه فقط در صفحات مورد نیاز بارگذاری شود. برای مثال، برای غیرفعال کردن اسکریپت های Contact Form 7 در همه جا به جز صفحه ی تماس با ما (با فرض اینکه slug آن contact است)، کد زیر را به functions.php اضافه کنید:
add_action( 'wp_print_scripts', 'dw_deregister_cf7_scripts', 100 );
function dw_deregister_cf7_scripts() {
if ( !is_page('contact') ) {
wp_deregister_script( 'contact-form-7' );
}
}
add_action( 'wp_print_styles', 'dw_deregister_cf7_styles', 100 );
function dw_deregister_cf7_styles() {
if ( !is_page('contact') ) {
wp_deregister_style( 'contact-form-7' );
}
}
این تکنیک را می توان برای بسیاری از افزونه ها بکار برد و تاثیر شگرفی بر سرعت بارگذاری صفحات غیرمرتبط ایجاد کرد.
۴. غیرفعال کردن XML-RPC
xmlrpc.php فایلی است که در گذشته برای ارتباطات راه دور با وردپرس (مثلاً از طریق اپلیکیشن موبایل) استفاده می شد. امروز، REST API جایگزین آن شده و این فایل بیشتر به یک هدف برای حملات Brute Force و DDoS تبدیل شده است. فعال بودن آن یعنی سرور شما باید به درخواست های غیرضروری و بالقوه مخرب پاسخ دهد.
راه حل: به جای افزونه، کد زیر را در فایل .htaccess خود قرار دهید تا دسترسی به این فایل به طور کامل مسدود شود:
<Files xmlrpc.php>
order allow,deny
deny from all
</Files>
۵. پیشواکشی DNS یا DNS-Prefetching
سایت شما احتمالا از منابع خارجی مانند Google Fonts, Google Analytics یا … استفاده می کند. هر بار که مرورگر به یک دامنه ی جدید برای دریافت این منابع متصل می شود، یک فرآیند “جستجوی DNS” زمان بر را طی می کند.
راه حل: شما می توانید به مرورگر بگویید که این جستجوها را از قبل و در پس زمینه انجام دهد. کد زیر را با استفاده از یک هوک به سربرگ (<head>) سایت خود اضافه کنید تا دامنه های مورد نظرتان پیش واکشی شوند.
add_action('wp_head', 'dw_dns_prefetch');
function dw_dns_prefetch() {
echo '<link rel="dns-prefetch" href="//fonts.googleapis.com">';
echo '<link rel="dns-prefetch" href="//www.google-analytics.com">';
echo '<link rel="dns-prefetch" href="//connect.facebook.net">';
// دامنههای دیگر را به همین شکل اضافه کنید
}
این کار میلی ثانیه های ارزشمندی را در بارگذاری اولیه سایت ذخیره می کند.
۶. حذف رشتههای کوئری (Query Strings) از منابع استاتیک
منابعی مانند فایل های CSS و JS اغلب با یک رشته ی کوئری نسخه در انتهای URL خود بارگذاری می شوند (مثلاً style.css?ver=1.0). این کار می تواند مانع از کش شدن این فایل ها توسط برخی سرورهای پروکسی و CDNها شود.
راه حل: با افزودن کد زیر به فایل functions.php، می توانید این رشته های نسخه را حذف کنید تا کش شدن فایل ها بهبود یابد.
function dw_remove_query_strings( $src ) {
if ( strpos( $src, '?ver=' ) ) {
$src = remove_query_arg( 'ver', $src );
}
return $src;
}
add_filter( 'script_loader_src', 'dw_remove_query_strings', 15, 1 );
add_filter( 'style_loader_src', 'dw_remove_query_strings', 15, 1 );
۷. غیرفعال کردن Embeds در وردپرس
از وردپرس ۴.۴ به بعد، این پلتفرم به طور خودکار به یک ارائه دهنده ی oEmbed تبدیل شد. این یعنی دیگران می توانند به راحتی پست های شما را در سایت خود جایگذاری کنند. این قابلیت یک فایل جاوااسکریپت به نام wp-embed.min.js را در تمام صفحات سایت شما بارگذاری می کند که برای اکثر سایت ها غیرضروری است.
راه حل: برای حذف این اسکریپت و بهینه سازی سایت، کد زیر را به functions.php اضافه کنید:
function dw_disable_embeds_code() {
// حذف اسکریپت wp-embed.min.js
wp_deregister_script( 'wp-embed' );
}
add_action( 'init', 'dw_disable_embeds_code' );
۸. میزبانی محلی فونتهای گوگل (Google Fonts)
فراخوانی فونت ها از سرورهای گوگل یک درخواست HTTP خارجی اضافه می کند و شما کنترلی روی کش شدن آن ندارید. میزبانی فونت ها روی سرور خودتان این درخواست را حذف کرده و سرعت را به شکل قابل توجهی افزایش می دهد.
راه حل:
- به Google Webfonts Helper بروید.
- فونت مورد نظر خود را پیدا کرده و استایل ها و کاراکترهای لازم (مثلاً cyrillic-ext, latin, latin-ext) را انتخاب کنید.
- فایل های فونت (.woff, .woff2) را دانلود کنید.
- فایل های دانلود شده را در پوشه ی fonts در قالب خود آپلود کنید.
- کد CSS ارائه شده توسط سایت را کپی کرده و در فایل style.css قالب خود قرار دهید. این کد از @font-face برای تعریف فونت های محلی استفاده می کند.
- تمام فراخوانی های فونت گوگل از سرور خارجی را از قالب خود حذف کنید.
۹. غیرفعال کردن Emojis
مشکل چیست؟ وردپرس برای پشتیبانی از ایموجی های قدیمی در مرورگرهای قدیمی، یک اسکریپت جاوااسکریپت به نام wp-emoji-release.min.js را به طور خودکار در سربرگ سایت تزریق می کند. امروزه تقریباً تمام مرورگرها به صورت بومی از ایموجی پشتیبانی می کنند و این اسکریپت یک بار اضافی و غیرضروری است.
راه حل: کد زیر را در فایل functions.php خود قرار دهید تا تمام هوک های مربوط به ایموجی حذف شوند.
function dw_disable_emojis() {
remove_action( 'wp_head', 'print_emoji_detection_script', 7 );
remove_action( 'admin_print_scripts', 'print_emoji_detection_script' );
remove_action( 'wp_print_styles', 'print_emoji_styles' );
remove_action( 'admin_print_styles', 'print_emoji_styles' );
remove_filter( 'the_content_feed', 'wp_staticize_emoji' );
remove_filter( 'comment_text_rss', 'wp_staticize_emoji' );
remove_filter( 'wp_mail', 'wp_staticize_emoji_for_email' );
}
add_action( 'init', 'dw_disable_emojis' );
۱۰. استفاده از preconnect
برای منابع حیاتی
dns-prefetch (تکنیک ۵) فقط جستجوی DNS را انجام می دهد. اما برای منابع حیاتی که می دانید قطعا بارگذاری خواهند شد (مانند فونت ها یا CDN)، می توانید یک قدم فراتر بروید و از preconnect استفاده کنید. این دستور به مرورگر می گوید که علاوه بر جستجوی DNS، مراحل اتصال TCP و مذاکره TLS را نیز انجام دهد.
راه حل: این کد را به سربرگ سایت خود اضافه کنید. این کار به ویژه برای CDN و فونت ها فوق العاده مؤثر است.
PHP
add_action('wp_head', 'dw_resource_hints');
function dw_resource_hints() {
// برای دامنهای که CDN شما از آن استفاده میکند
echo '<link rel="preconnect" href="https://cdn.yourdomain.com" crossorigin>';
// برای فونتهای گوگل (اگر هنوز از سرور خارجی استفاده میکنید)
echo '<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>';
}
استفاده از crossorigin
ضروری است زیرا این منابع معمولاً بدون ارسال کوکیها بارگیری میشوند.
نتیجهگیری
افزایش سرعت وردپرس یک مسابقه ی بی پایان نیست، بلکه یک فرآیند هوشمندانه برای حذف موارد غیرضروری و بهینه سازی درخواست هاست. با به کارگیری این ۱۰ روش دستی، شما از سطح یک کاربر عادی وردپرس فراتر رفته و کنترل واقعی عملکرد سایت خود را به دست می گیرید. این روش ها نه تنها سرعت بارگذاری را به شکل چشمگیری بهبود می بخشند، بلکه با کاهش بار روی سرور، پایداری و امنیت سایت شما را نیز تقویت می کنند.
همیشه به یاد داشته باشید: قبل از اعمال هرگونه تغییر در کد، یک نسخه ی پشتیبان کامل از سایت خود تهیه کنید.
هنوز دیدگاهی ثبت نشده است.