پاسخ کوتاه: هاست وردپرسی یک پلن میزبانی لینوکس است که وب سرور، نسخه PHP و پایگاه داده آن برای رفتار وردپرس تنظیم شده است. مشخصات یک هاست وردپرسی درست چهار چیز است: PHP نسخه ۸٫۳ یا بالاتر، MariaDB نسخه ۱۰٫۱۱ یا MySQL نسخه ۸٫۰ یا بالاتر، پشتیبانی HTTPS، و امکان بالا بردن memory_limit تا حداقل ۲۵۶ مگابایت. اگر این چهار مورد در پلن نباشد، برچسب «وردپرسی» روی آن یک نام بازاریابی است، نه یک سرویس متفاوت.
همین چهار مورد را خود وردپرس هم اعلام کرده است: در صفحه نیازمندی های وردپرس (wordpress.org/about/requirements، واکشی ۳ مهر ۱۴۰۵) نوشته شده PHP ۸٫۳ یا بالاتر، MariaDB ۱۰٫۱۱ یا بالاتر یا MySQL ۸٫۰ یا بالاتر، و پشتیبانی HTTPS. آخرین نسخه وردپرس در همان تاریخ ۷٫۱٫۲ بود و حداقل اعلامی خودش PHP ۷٫۴ و MySQL ۵٫۵٫۵ است. یعنی فاصله حداقل و پیشنهاد زیاد است و پلنی که فقط حداقل را رد می کند، در عمل سایت را زمین می زند.
ادامه این راهنما سه کار می کند: می گوید کدام مشخصات واقعا تعیین کننده است، پنج دستور می دهد که خودت روی سایت فروشنده اجرا کنی، و جدولی می دهد که هر سقف پلن را به خطایی که بعدا در وردپرس می بینی وصل می کند.
هاست وردپرسی چیست و چه چیزی آن را از هاست معمولی جدا می کند؟
هاست وردپرسی یک هاست لینوکس است که چهار تنظیم روی آن انجام شده: وب سروری با کش اختصاصی وردپرس (مثل LSCache روی LiteSpeed)، نسخه PHP قابل تغییر از پنل، پایگاه داده روی دیسک سریع NVMe، و امکان اجرای ابزارهای مدیریتی وردپرس مثل WP-CLI. تفاوت واقعی با هاست اشتراکی معمولی در همین تنظیمات است، نه در فضای دیسک. دو پلن با یک ترابایت فضای یکسان می توانند سرعت کاملا متفاوتی بدهند.
در بازار ایران هر پلنی که یک دکمه نصب وردپرس داشته باشد، خودش را هاست وردپرسی می نامد. برای اینکه بفهمی برچسب واقعی است یا نه، سه چیز را کتبی بخواه: کش وردپرس در سطح سرور (نه فقط افزونه کش روی سایت)، کرون واقعی سرور، و تغییر نسخه PHP بدون تیکت. اگر یکی از این سه نبود، آن پلن یک هاست اشتراکی معمولی است با یک برچسب تازه. کسی که تفاوت انواع میزبانی را نمی داند، بهتر است اول هاست چیست و چه انواعی دارد را بخواند و بعد سراغ مشخصات وردپرسی بیاید.
مشخصات فنی که وردپرس واقعا لازم دارد
این جدول را با پشتیبانی چت کن؛ هر ردیف یک عدد است که یا می دهند یا نمی دهند. ستون آخر مهم تر از دو ستون قبلی است، چون همان چیزی است که سه ماه بعد به شکل خطا به تو برمی گردد.
| مورد | حداقل اعلامی | پیشنهاد برای سایت جدی | اگر کمتر باشد چه می شود |
|---|---|---|---|
| نسخه PHP | ۷٫۴ | ۸٫۳ یا بالاتر | افزونه و قالب تازه نصب نمی شود و پیام «نسخه PHP شما قدیمی است» می گیری |
| پایگاه داده | MySQL ۵٫۵٫۵ | MariaDB ۱۰٫۱۱ یا MySQL ۸٫۰ یا بالاتر | افزونه های فروشگاهی و برگه ساز کند یا ناسازگار می شوند |
| memory_limit | ۱۲۸ مگابایت | ۲۵۶ تا ۵۱۲ مگابایت | خطای ۵۰۸، صفحه سفید یا نیمه کاره ماندن ذخیره برگه |
| max_execution_time | ۳۰ ثانیه | ۳۰۰ ثانیه | خروجی گرفتن، درون ریزی و بکاپ نیمه راه قطع می شود |
| upload_max_filesize و post_max_size | ۸ مگابایت | ۶۴ مگابایت و هم اندازه | آپلود تصویر سنگین، قالب یا افزونه شکست می خورد |
| max_input_vars | ۱۰۰۰ | ۳۰۰۰ یا بالاتر | منوی بزرگ یا برگه ساز، بی صدا ناقص ذخیره می شود |
ردیف آخر کم شناخته شده ترین است. وقتی max_input_vars روی ۱۰۰۰ باشد و یک منوی چندهزینه ای یا یک برگه سنگین را ذخیره کنی، وردپرس بدون هیچ پیام خطایی بخشی از داده را ذخیره نمی کند؛ بعدا می بینی سه آیتم از منو غیب شده است. این عدد را قبل از پرداخت بپرس، چون بعدا تغییرش فقط با دسترسی به فایل تنظیمات ممکن است.

پنج دستور برای سنجش هاست قبل از پرداخت
همه این دستورها را روی سایت خود شرکت و روی یک سایت نمونه که میزبانی می کند اجرا کن. صفحه فروش پلن، سریع ترین صفحه آن شرکت است و هیچ چیز درباره سرعت واقعی سایت تو نمی گوید. برای اجرای هر دستور به ترمینال لینوکس یا مک یا Git Bash روی ویندوز نیاز داری.
۱) زمان پاسخ سرور را دو بار بگیر
curl -o /dev/null -s -A "Mozilla/5.0" \
-w "TTFB: %{time_starttransfer}s | کل: %{time_total}s\n" \
https://example.com/
روی سایت خودمان این دستور را امروز سه بار پشت سر هم اجرا کردیم: ۰٫۹۵ ثانیه، ۰٫۸۶ ثانیه و ۰٫۸۳ ثانیه. اگر بار دوم و سوم محسوس کمتر از بار اول است، روی آن هاست لایه کش کار می کند. اگر هر سه عدد بالای ۲ ثانیه و نزدیک به هم بود، سرور برای سایت وردپرسی کند است و هیچ تنظیمی داخل وردپرس این را جبران نمی کند.
۲) ببین وب سرور و کش واقعا چیست
curl -s -I -A "Mozilla/5.0" https://example.com/ \
| grep -iE "server|x-litespeed-cache|cache-control|content-encoding"
اگر در هدر پاسخ خط x-litespeed-cache: hit دیدی، کش وردپرس در سطح سرور روشن است. اگر فقط server: Apache دیدی و هیچ نشانه ای از کش نبود، هر بازدید دوباره از PHP و دیتابیس ساخته می شود. همین را روی سایت خودمان دیدیم: cache-control: no-cache, private. این هدر نشان می دهد لایه کش بالای وردپرس وجود ندارد و صفحه در هر درخواست از نو ساخته می شود؛ روی هاستی با منابع محدود، همین یک مورد تفاوت بین سایت سریع و کند است.
۳) فشرده سازی را با عدد بسنج
a=$(curl -s -o /dev/null -w "%{size_download}" https://example.com/)
b=$(curl -s -o /dev/null -w "%{size_download}" -H "Accept-Encoding: gzip, br" https://example.com/)
echo "بدون فشرده سازی: $a بایت | با فشرده سازی: $b بایت"
روی یکی از مقاله های سایت خودمان این دو عدد ۱۷۴٬۴۶۷ و ۴۰٬۹۷۵ بایت بود؛ یعنی فشرده سازی حدود ۷۷ درصد از حجم HTML را کم می کند. اگر دو عدد یکسان بیرون آمد، فشرده سازی روی آن هاست خاموش است یا وب سرور درخواست را فشرده نمی کند و همان یک تنظیم، سرعت سایت تو را روی موبایل نصف می کند.
۴) روی یک سایت وردپرسی میزبانی شده، REST API را صدا بزن
curl -s -o /dev/null -w "%{http_code} | %{time_total}s\n" \
https://demo.example.com/wp-json/wp/v2/types
کد ۲۰۰ یعنی PHP، دیتابیس و مسیرنویسی روی آن هاست درست کار می کند. اگر ۴۰۳، ۵۰۰ یا صفحه سفید دیدی، آن سایت نمونه روی همان هاست مشکل دارد و انتظار نداشته باش سایت تو حالش بهتر باشد.
۵) پنج درخواست پشت سر هم بگیر تا نوسان را ببینی
for i in 1 2 3 4 5; do
curl -o /dev/null -s -w "%{time_starttransfer}\n" https://example.com/
done
روی هاست اشتراکی شلوغ، معمولا یکی از این پنج عدد چند برابر بقیه است؛ همان لحظه ای است که پلن به سقف منابع خورده. اگر عدد پنجم از اولی بدتر شد و ثابت ماند، احتمالا صفحه کش نشده و بار سرور را کامل تحمل می کنی.
از داخل خود وردپرس، سقف های واقعی را بخوان
وقتی سایت بالا آمد، این مرحله را انجام بده. با SSH و WP-CLI دقیق ترین عددها را می گیری، چون همان چیزی را نشان می دهد که وردپرس در عمل می بیند:
wp eval 'printf("PHP %s | memory_limit %s | max_execution_time %s | upload_max_filesize %s | post_max_size %s | max_input_vars %s\n", PHP_VERSION, ini_get("memory_limit"), ini_get("max_execution_time"), ini_get("upload_max_filesize"), ini_get("post_max_size"), ini_get("max_input_vars"));'
wp core version
wp db size --human-readable
wp plugin list --status=active
سه عدد اول به تو می گوید سایت چقدر جا برای رشد دارد: نسخه وردپرس، حجم دیتابیس و فهرست افزونه های فعال. اگر SSH و WP-CLI نداری، همین فهرست از پیشخوان هم خوانده می شود: ابزارها، سلامت سایت، برگه اطلاعات، بخش سرور. تفاوت این است که آنجا فقط می خوانی و اینجا می توانی با یک دستور تغییر بدهی.
دو فایل هم هست که سقف ها را از سمت وردپرس و از سمت سرور تنظیم می کند:
<?php
// در wp-config.php، پیش از خط «همین است، ویرایش نکنید»
define('WP_MEMORY_LIMIT', '256M');
define('WP_MAX_MEMORY_LIMIT', '512M');
define('WP_POST_REVISIONS', 5);
; فایل .user.ini در پوشه ریشه سایت
; روی LiteSpeed و Apache با PHP-FPM خوانده می شود
memory_limit = 256M
max_execution_time = 300
upload_max_filesize = 64M
post_max_size = 64M
max_input_vars = 3000
نکته اول: WP_MEMORY_LIMIT سقف داخل وردپرس است، ولی اگر سرور عدد کمتری بدهد همان کمتر اعمال می شود؛ پس باید هر دو طرف بالا باشد. نکته دوم: post_max_size باید بزرگ تر یا مساوی upload_max_filesize باشد، وگرنه آپلود بی هیچ پیام روشنی شکست می خورد.

اگر SSH نداری: یک فایل تست بساز و بعد پاکش کن
بیشتر پلن های وردپرسی SSH نمی دهند. در آن حالت یک فایل کوچک PHP در پوشه ریشه سایت بساز، یک بار در مرورگر باز کن، عددها را بردار و فایل را همان روز پاک کن. این کار را روی پلن آزمایشی یا پیش از انتقال نهایی انجام بده، نه روی سایتی که مشتری روی آن کار می کند:
<?php
// نام فایل: check-limits.php — بعد از خواندن، فورا حذفش کن
header('Content-Type: text/plain; charset=utf-8');
foreach (['PHP_VERSION', 'memory_limit', 'max_execution_time',
'upload_max_filesize', 'post_max_size', 'max_input_vars'] as $k) {
printf("%s = %s\n", $k, ini_get($k));
}
خروجی این فایل همان فهرستی است که در جدول مشخصات دیدی. اگر memory_limit روی ۱۲۸ مگابایت یا max_input_vars روی ۱۰۰۰ بود، پیش از ساختن فروشگاه یا برگه های سنگین با پشتیبانی مکاتبه کن. این روش یک مزیت دارد: عددی که می گیری سقف واقعی سرور همین حالا است، نه آنچه در صفحه فروش پلن نوشته اند.

سه تله وردپرسی که در مشخصات پلن نوشته نمی شود
۱) کرون وردپرس و انتشارهای زمان بندی شده
وردپرس زمان بندی را با بازدید واقعی اجرا می کند، نه با ساعت سرور. اگر بازدید سایت کم باشد یا سرور درخواست داخلی (loopback) را ببندد، نوشته زمان بندی شده منتشر نمی شود و ایمیل یادآوری یا اطلاع سفارش هم دیر می رسد، بی هیچ خطایی. دو دستور زیر وضعیت را روشن می کند:
wp cron event list
wp eval 'var_dump(wp_doing_cron());'
راه حل استاندارد، غیرفعال کردن کرون داخلی و گذاشتن یک کرون واقعی روی سرور است:
wp config set DISABLE_WP_CRON true --raw
# در پنل هاست، هر ۵ دقیقه
*/5 * * * * wget -q -O - "https://example.com/wp-cron.php?doing_wp_cron" >/dev/null 2>&1
۲) ایمیل وردپرس
وردپرس فرم ها و اطلاع سفارش را با تابع پیش فرض ارسال ایمیل روی سرور می فرستد. روی بیشتر هاست های اشتراکی این ایمیل ها به پوشه اسپم می روند یا کلا تحویل نمی شوند، و هیچ کس تا شکایت مشتری متوجه نمی شود. برای تست:
wp eval 'var_dump(wp_mail("info@example.com", "تست ایمیل", "این یک تست است"));'
اگر خروجی true بود ولی ایمیل نیامد، ارسال انجام شده و تحویل نشده؛ یعنی به تنظیمات SMTP با یک سرویس ایمیل معتبر نیاز داری. این را قبل از راه اندازی فروشگاه بپرس، نه بعد از اولین سفارش.
۳) کش آبجکت برای ووکامرس و برگه ساز
فروشگاه ووکامرس و برگه های سنگین، کوئری های تکراری زیادی به دیتابیس می زنند. کش آبجکت با Redis همان نتیجه ها را در حافظه نگه می دارد و بار دیتابیس را کم می کند. برای دیدن اینکه فعال است یا نه:
wp eval 'var_dump(file_exists(WP_CONTENT_DIR . "/object-cache.php"));'
خروجی false یعنی کش آبجکت نداری. اگر پلن Redis نمی دهد، جایگزین ضعیف تر افزونه کش روی دیسک است که بخشی از بار را کم می کند؛ برای فروشگاه فعال، پلنی با Redis انتخاب درست تری است.
برای ووکامرس و المنتور چه منابعی لازم است؟
کمبود منابع در وردپرس معمولا با پیام روشن نمی آید؛ با نشانه می آید. این جدول نشانه ها را به علت وصل می کند:
| نشانه ای که می بینی | علت محتمل | چه چیزی را از پشتیبانی بپرس |
|---|---|---|
| خطای ۵۰۸ یا صفحه سفید زیر بار | کمبود حافظه یا سقف پردازش همزمان | سقف ورودی همزمان (Entry Process) پلن چقدر است |
| آپلود تصویر در میانه قطع می شود | سقف حجم آپلود و حجم درخواست | مقدار دقیق upload_max_filesize و post_max_size |
| ذخیره برگه ساز ناقص می ماند | تعداد متغیرهای ورودی | مقدار max_input_vars پلن |
| نوشته زمان بندی شده منتشر نمی شود | کرون داخلی و کمبود بازدید | امکان کرون واقعی سرور |
| ایمیل سفارش به مشتری نمی رسد | ارسال با تابع پیش فرض سرور | پشتیبانی از SMTP یا ایمیل تراکنشی |
یک هشدار درباره واژه «نامحدود»: نامحدود معمولا یعنی پهنای باند نامحدود، نه منابع نامحدود. سقف پردازنده، ورودی همزمان و تعداد فایل روی همان پلن نامحدود هم نوشته شده است، فقط در صفحه دیگری. آن سقف ها را کتبی بگیر و در قرارداد یا تیکت نگه دار، تا اگر بعدا سرویس قطع شد بدانی روی کدام عدد بحث می کنی.
اشتباه های رایج در خرید هاست وردپرسی
- خرید بر اساس فضای دیسک. وردپرس خودش حدود یک گیگابایت فضا می خواهد؛ تفاوت دو پلن در فضای دیسک، به اندازه تفاوتشان در سقف پردازش و ورودی همزمان مهم نیست.
- سنجش سرعت روی سایت خود شرکت. همان دستورهای بخش قبل را روی یک سایت نمونه یا سایت مشتریانشان اجرا کن.
- نگرفتن قیمت تمدید. قیمت سال اول و قیمت تمدید دو عدد جدا هستند؛ پیش از پرداخت، تعرفه تمدید را کتبی بخواه.
- خوابیدن فضاهای اشغال شده روی حساب میزبانی. پلن هایی که فقط با کنترل پنل اختصاصی کار می کنند، مهاجرت بعدی را سخت تر می کنند. امکان بکاپ کامل و بازگردانی بدون تیکت را از قبل بپرس.
- نبود تست بکاپ. فقط نپرس که بکاپ می گیرید؛ بپرس بازگردانی چطور انجام می شود و چند نسخه نگه می دارید.
هزینه میزبانی هم بخشی از هزینه سالانه سایت است. اگر می خواهی بدانی بقیه هزینه ها از کجا می آید، در مقاله هزینه طراحی سایت در ایران تفکیک اقلام آمده است.
جمع بندی: پنج پرسش از پشتیبانی قبل از پرداخت
این پنج پرسش را قبل از پرداخت کتبی بفرست. پاسخ هایشان تصمیم را قطعی می کند:
- نسخه پیش فرض PHP چقدر است و تغییر آن بدون تیکت ممکن است؟
- مقدار memory_limit، max_execution_time، upload_max_filesize، post_max_size و max_input_vars را می فرستید؟
- کش وردپرس در سطح سرور روشن است و با کدام تکنولوژی؟ LSCache، Redis یا هیچ کدام؟
- WP-CLI و SSH می دهید؟ کرون واقعی سرور چطور تنظیم می شود؟
- سقف ورودی همزمان و تعداد فایل (Inode) پلن چقدر است؟
پاسخ درست به این پنج پرسش، تقریبا همان مشخصات هاست وردپرسی است. تا وقتی این عددها را کتبی نگرفته ای، برچسب پلن هیچ معنایی ندارد؛ چون تفاوت هاست وردپرسی با یک هاست اشتراکی معمولی در همین تنظیمات است و نه در نام سرویس. اگر می خواهی سایت وردپرسی یا اختصاصی برایت ساخته شود، مقایسه این دو مسیر و مراحل کار در صفحه طراحی سایت در شیراز آمده است.


ارسال نظر جدید