CDN چطور وردپرس را سریع میکند؟ تنظیمات درست کش برای سایت وردپرسی
CDN برای وردپرس دقیقاً چه کاری میکند، کدام بخشها را باید کش کرد و کدام را نه (wp-admin، ووکامرس، کاربر واردشده)، و چطور بدون خرابکردن سایت راهاندازی کنید.
وردپرس برای هر بازدید، PHP اجرا میکند، چند بار از دیتابیس میپرسد و صفحه را از اول میسازد. وقتی هزار نفر یک مقاله را میخوانند، سرور هزار بار همان صفحه را ساخته است. CDN دقیقاً همین هدر رفتن را هدف میگیرد: صفحه را یک بار از سرور شما میگیرد و باقی بازدیدها را از نزدیکترین نقطه به کاربر جواب میدهد.
CDN برای وردپرس چه چیزهایی را بهتر میکند؟
- زمان اولین بایت (TTFB): صفحه کششده بدون اجرای PHP و بدون سفر تا سرور شما میرسد. این همان معیاری است که روی LCP و روی CrUX بیشترین اثر را دارد.
- فشار روی هاست: وردپرس روی هاست اشتراکی با چند ده بازدید همزمان نفسنفس میزند. وقتی بیشتر درخواستها هیچوقت به آن نمیرسند، خطای ۵۰۲ و ۵۰۳ کم میشود. بیشتر در کاهش پهنای باند و هزینه سرور.
- فایلهای استاتیک: تصویر، CSS، JavaScript و فونت قالب و افزونهها (که معمولاً بخش بزرگ حجم صفحهاند) خودکار از کش سرو میشوند.
- امنیت پایه: گواهی SSL، محافظت در برابر حمله و محدودکردن رباتها پیش از رسیدن به وردپرس. هدف معمول حملهها
wp-login.phpوxmlrpc.phpاست؛ محدودکردن نرخ و رباتها همینجا به کار میآید. - تحمل قطعی: با چند مبدأ و failover، قطعی سرور اول لزوماً قطعی سایت نیست.
اما CDN جای بهینهسازی خود وردپرس را نمیگیرد. افزونه سنگین، تصویر ۴ مگابایتی و کوئری کند را فقط سریعتر تحویل میدهد. برای آنها راهنمای سریعکردن وردپرس را ببینید.
چه چیزی را کش کنیم، چه چیزی را نه
مهمترین تصمیم همین جدول است. اگر اشتباه کنید، یک کاربر ممکن است صفحه کاربر دیگر را ببیند.
| بخش | کش؟ | چرا |
|---|---|---|
تصویر، CSS، JS، فونت (/wp-content/, /wp-includes/) | بله، TTL بلند | تغییر نمیکنند؛ با نسخه در URL امناند |
| مقاله، صفحه، دستهبندی برای بازدیدکننده مهمان | بله، TTL کوتاه تا متوسط | بیشترین سود اینجاست |
/wp-admin/، /wp-login.php | هرگز | کاربر واردشده و نشست |
/wp-json/ (REST) | معمولاً خیر، مگر مسیر عمومی مشخص | پاسخهای شخصیسازیشده |
| سبد خرید، تسویهحساب، حساب من (ووکامرس) | هرگز | مال هر کاربر جداست |
کاربر با کوکی wordpress_logged_in_* | دور بزند | نام کاربر و نوار مدیریت در صفحه است |
فرم نظر با کوکی comment_author_* | دور بزند | نام و ایمیل در فرم پر شده |
?s= جستجو | معمولاً خیر | تنوع زیاد، نرخ برخورد پایین |
نکتهای که زیاد پیش میآید: کشکردن HTML بدون قاعده برای کوکی. اگر این را نگذارید، اولین مدیری که وارد شود نوار مدیریت خودش را داخل کش میگذارد و بقیه میبینند. توضیح فنی کامل در نحوه کار کش در CDN آمده است.
قدمبهقدم راهاندازی
- دامنه را اضافه کنید و رکوردها را بررسی کنید. ترتیب بیخطر در راهاندازی CDN بدون قطعی آمده است. اگر ایمیل دارید، رکورد MX را دست نزنید و ابرکشی (proxy) نکنید.
- اول فقط فایلهای استاتیک. در nsin تصویر، CSS، JS و فونت بر اساس پسوند خودکار کش میشوند و هدر
Cache-Controlشما را رعایت میکنند. یک روز همین را نگه دارید و ببینید چیزی نشکسته. - بعد صفحات عمومی. برای هاست و مسیرهای عمومی یک قانون کش با TTL (مثلاً ۱۰ دقیقه تا یک ساعت) بسازید.
- مسیرهای حساس را بیرون بگذارید.
/wp-admin،/wp-login.php،/cart،/checkout،/my-accountو هر مسیر کاربرمحور دیگر. - با لاگ زنده بررسی کنید. ببینید کدام مسیر hit میخورد و کدام به مبدأ میرود. اگر hit صفحهای که انتظار داشتید پایین است، معمولاً
Set-CookieیاCache-Control: no-cacheاز وردپرس یا یک افزونه آمده. - purge را وصل کنید. بعد از انتشار یا ویرایش مطلب، کش آن صفحه (یا همه) را پاک کنید. اگر سایت را پشت CDN در حال توسعه میدهید، حالت توسعهدهنده و purge را ببینید.
خطاهای رایج
- تغییر میدهم ولی سایت همان قبلی را نشان میدهد. کش پاک نشده. بعد از هر انتشار purge کنید یا TTL را کوتاهتر بگیرید.
- همه بهعنوان مدیر وارد شدهاند! HTML با کوکی نشست کش شده. قانون دور زدن کوکی را اضافه کنید و بلافاصله کش را purge کنید.
- سبد خرید خالی میشود یا مال دیگری است. مسیرهای ووکامرس باید کاملاً دور زده شوند.
- نرخ hit صفر است. یک افزونه کش یا امنیتی
Set-Cookieبه همه صفحات میزند، یاVary: Cookieست شده است. - حلقه ریدایرکت. SSL روی هر دو طرف است و وردپرس خودش به
httpبرمیگرداند. آدرس سایت را در تنظیمات وردپرسhttpsکنید. راهنمای گواهی SSL رایگان کمک میکند. - IP همه بازدیدکنندهها یکی دیده میشود. وردپرس باید IP واقعی را از هدر ارسالی بخواند، نه آدرس اتصال مستقیم. این برای افزونههای امنیتی و ضدهرزنامه مهم است.
آیا افزونه کش لازم است؟
بله، معمولاً هر دو کنار هم بهترند. افزونههای کش (مثل WP Super Cache یا LiteSpeed Cache) صفحه را روی خود سرور آماده نگه میدارند تا PHP اجرا نشود؛ CDN همان صفحه را از جای نزدیکتر میدهد. دو لایه با هم TTFB را روی مبدأ هم پایین میآورند وقتی CDN کش ندارد (اولین درخواست یا بعد از purge). فقط مراقب باشید دو لایه تنظیمات متناقض نداشته باشند.
پرسشهای متداول
آیا با CDN سایت وردپرسی من واقعاً سریعتر میشود؟
برای بازدیدکنندههای مهمان و صفحههای کششده بله و معمولاً چشمگیر. برای مدیر واردشده یا سبد خرید ووکامرس نه، چون آنها باید از مبدأ بیایند.
ووکامرس را هم میشود پشت CDN گذاشت؟
بله. صفحات محصول و دستهبندی را کش کنید و سبد، تسویهحساب و حساب کاربری را کاملاً دور بزنید.
بعد از وصلکردن CDN رتبهام کم میشود؟
نه، اگر آدرسها و ریدایرکتها عوض نشوند. معمولاً سرعت بهتر و پایداری بیشتر به نفع سئو است؛ شرحش در چرا CDN رتبه سئو را بهبود میدهد.
XML-RPC و wp-login را چه کنیم؟
اگر xmlrpc.php را استفاده نمیکنید ببندید یا محدود کنید. برای wp-login.php محدودیت نرخ بگذارید تا حدس رمز کند شود.
قدم بعدی
دامنه وردپرسی خود را در پنل nsin اضافه کنید، اول استاتیکها را روشن کنید و بعد قانون کش صفحات عمومی را بگذارید. جزئیات قواعد در مستندات است.
