هاست وردپرسی چیست و چه مشخصاتی باید داشته باشد؟ راهنمای سنجش قبل از خرید

یاسین
1405/7/3
12 دقیقه
167 بازدید
هاست وردپرسی چیست و چه مشخصاتی باید داشته باشد؟ راهنمای سنجش قبل از خرید

پاسخ کوتاه: هاست وردپرسی یک پلن میزبانی لینوکس است که وب سرور، نسخه 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 یا ایمیل تراکنشی

یک هشدار درباره واژه «نامحدود»: نامحدود معمولا یعنی پهنای باند نامحدود، نه منابع نامحدود. سقف پردازنده، ورودی همزمان و تعداد فایل روی همان پلن نامحدود هم نوشته شده است، فقط در صفحه دیگری. آن سقف ها را کتبی بگیر و در قرارداد یا تیکت نگه دار، تا اگر بعدا سرویس قطع شد بدانی روی کدام عدد بحث می کنی.

اشتباه های رایج در خرید هاست وردپرسی

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

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

جمع بندی: پنج پرسش از پشتیبانی قبل از پرداخت

این پنج پرسش را قبل از پرداخت کتبی بفرست. پاسخ هایشان تصمیم را قطعی می کند:

  1. نسخه پیش فرض PHP چقدر است و تغییر آن بدون تیکت ممکن است؟
  2. مقدار memory_limit، max_execution_time، upload_max_filesize، post_max_size و max_input_vars را می فرستید؟
  3. کش وردپرس در سطح سرور روشن است و با کدام تکنولوژی؟ LSCache، Redis یا هیچ کدام؟
  4. WP-CLI و SSH می دهید؟ کرون واقعی سرور چطور تنظیم می شود؟
  5. سقف ورودی همزمان و تعداد فایل (Inode) پلن چقدر است؟

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

اشتراک‌گذاری مقاله:

سوالات متداول

نظرات کاربران

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

حداقل ۱۰ و حداکثر ۱۰۰۰ کاراکتر

هنوز نظری ثبت نشده است

اولین نفری باشید که دیدگاه خود را می‌نویسد!

مطالب مرتبط

مقالات مشابه که ممکن است برایتان جالب باشد