سایت روی سرور داخلی است و سرور هم سالم است، اما در روزهای محدودیت اینترنت، صفحهها دهها ثانیه طول میکشند، فرم ورود کار نمیکند و پیشخوان وردپرس قفل میشود. دلیل معمولاً خود سرور نیست؛ منابعی است که سایت از سرورهای خارجی بارگذاری میکند. در این مقاله توضیح میدهیم چرا سایت در قطعی اینترنت بینالملل خراب میشود، چطور وابستگیهای خارجی را پیدا کنیم و چطور آنها را حذف یا بومی کنیم.
فهرست مطالب
چرا یک منبع خارجی کل صفحه را کند میکند؟
وقتی ارتباط بینالملل قطع است، درخواست مرورگر به یک سرور خارجی گاهی بلافاصله رد نمیشود؛ بلکه تا پایان زمان انتظار (Timeout) معلق میماند. اگر آن منبع یک فایل CSS یا JavaScript در بخش <head> باشد، مرورگر رندر صفحه را تا تعیین تکلیف آن متوقف میکند. نتیجه، صفحه سفیدی است که چند ده ثانیه بعد ظاهر میشود؛ حتی اگر همه محتوای اصلی از سرور داخلی آمده باشد.
همین اتفاق سمت سرور هم رخ میدهد: اگر کد سایت هنگام ساخت صفحه یک API خارجی را صدا بزند، پاسخ هر درخواست به اندازه Timeout آن فراخوانی کند میشود.
پیدا کردن وابستگیهای خارجی
- در مرورگر DevTools را باز کنید، به تب Network بروید و صفحه را با Cache غیرفعال بارگذاری کنید.
- ستون Domain را اضافه کنید و درخواستها را بر اساس دامنه مرتب کنید. هر دامنهای غیر از دامنه سایت و CDN داخلی شما یک وابستگی است.
- همین کار را برای صفحههای کلیدی تکرار کنید: صفحه اصلی، صفحه محصول، سبد خرید، پرداخت، ورود و پیشخوان مدیریت.
- برای سمت سرور، اتصالهای خروجی را بررسی کنید:
sudo ss -tnp state establishedیا لاگ اتصالهای خروجی فایروال.
نمونه دامنههای رایجی که باید به دنبالشان باشید:
| دامنه | کاربرد | اثر در قطعی |
|---|---|---|
fonts.googleapis.com، fonts.gstatic.com |
فونت گوگل | تاخیر در نمایش متن یا کل صفحه |
cdnjs.cloudflare.com، cdn.jsdelivr.net، unpkg.com |
کتابخانههای JS و CSS | خرابی منو، اسلایدر و فرمها |
www.google.com/recaptcha |
کپچا | ورود، ثبتنام و فرم تماس کار نمیکند |
www.googletagmanager.com، google-analytics.com |
آمار و تگها | معمولاً async؛ ولی گاهی کندی |
secure.gravatar.com |
تصویر کاربران | کندی بخش دیدگاهها |
maps.googleapis.com |
نقشه | نقشه نمایش داده نمیشود |
فونتها و آیکونها
فونتهایی مثل وزیرمتن یا ایرانسنس را روی سرور خودتان میزبانی کنید و آنها را با @font-face و font-display: swap بارگذاری کنید تا متن حتی پیش از بارگذاری فونت نمایش داده شود. آیکونفونتهایی مثل Font Awesome را هم بهجای CDN از مسیر داخلی سایت بارگذاری کنید. بیشتر قالبها و افزونههای بهینهسازی وردپرس گزینه «میزبانی محلی فونتهای گوگل» دارند.
کتابخانههای JavaScript و CDN خارجی
- فایلهایی مثل jQuery، Bootstrap و Swiper را دانلود کنید و از مسیر سایت خودتان سرو کنید.
- اسکریپتهای غیرضروری را با
deferیاasyncبارگذاری کنید تا رندر صفحه را متوقف نکنند. - اگر از CDN استفاده میکنید، مطمئن شوید که CDN شما در داخل کشور نقطه حضور (PoP) دارد و در زمان قطعی بینالملل، کاربران داخلی را از سرورهای داخلی پاسخ میدهد.
این اصلاحات علاوه بر پایداری، سرعت سایت را در شرایط عادی هم بهتر میکنند؛ روشهای بیشتر در افزایش سرعت وردپرس.
reCAPTCHA و ورود کاربران
reCAPTCHA گوگل یکی از جدیترین نقاط شکست است: وقتی اسکریپت آن بارگذاری نشود، فرم ورود، ثبتنام، فراموشی رمز و حتی ثبت سفارش ارسال نمیشود. جایگزینها:
- کپچای محلی (تصویری یا ریاضی) که کاملاً روی سرور خودتان اجرا میشود.
- ورود با کد یکبار مصرف پیامکی از طریق سرویس پیامک داخلی.
- محدودسازی نرخ درخواست و مسدودسازی خودکار با Fail2ban یا WAF بهجای کپچای خارجی؛ راهنما در نصب Fail2ban.
آنالیتیکس، پیکسلها و ویجتها
Google Analytics، Tag Manager، پیکسلهای تبلیغاتی و ویجتهای گفتوگوی آنلاین خارجی را فقط بهصورت async و پس از بارگذاری اصلی صفحه اجرا کنید. در زمان قطعی، این ابزارها داده ثبت نمیکنند؛ اگر آمار برای کسبوکار حیاتی است، یک ابزار آمار Self-hosted (مثل Matomo) روی سرور داخلی کنار آن داشته باشید.
وردپرس و درخواستهای سمت سرور
وردپرس بهطور پیشفرض برای بررسی بهروزرسانی هسته، افزونهها و قالبها، اخبار پیشخوان و لایسنس افزونههای تجاری به سرورهای خارجی درخواست میفرستد. در قطعی، هر کدام از اینها تا Timeout منتظر میماند و پیشخوان بسیار کند میشود. در wp-config.php میتوانید درخواستهای خارجی را مسدود و فقط دامنههای لازم را مجاز کنید:
define( 'WP_HTTP_BLOCK_EXTERNAL', true );
define( 'WP_ACCESSIBLE_HOSTS', 'api.example-sms.ir,*.shaparak.ir' );
نکتهها:
- این تنظیم بهروزرسانی خودکار را هم متوقف میکند؛ پس از رفع محدودیت آن را بردارید یا بهروزرسانیها را دستی انجام دهید.
- دامنههای درگاه پرداخت، پیامک و هر API داخلی که سایت به آن نیاز دارد را در
WP_ACCESSIBLE_HOSTSوارد کنید. مقادیر بالا فقط نمونهاند. wp-cronرا به Cron سیستم منتقل کنید تا کارهای زمانبندیشده پاسخ صفحههای کاربران را کند نکنند؛ راهنما در Cron و Systemd Timer.
درگاه پرداخت، پیامک و ایمیل
- درگاه پرداخت: درگاههای بانکی و پرداختیارهای داخلی روی شبکه داخلی کار میکنند. درگاههای ارزی و پرداختهای خارجی در دسترس نیستند.
- پیامک: سرویسهای پیامک داخلی معمولاً برقرارند و بهترین کانال اطلاعرسانی و ورود در این شرایط هستند.
- ایمیل: ارسال به سرویسهای خارجی مثل Gmail و Outlook در صف میماند. اگر ایمیل سایت را از طریق یک سرویس SMTP خارجی میفرستید، در قطعی کاملاً متوقف میشود. تنظیمات درست ارسال در SPF، DKIM و DMARC.
آزمایش سایت در شرایط قطعی
لازم نیست منتظر قطعی بمانید. یک روش ساده این است که در کامپیوتر خودتان دامنههای خارجی را موقتاً به آدرس نامعتبر هدایت کنید و رفتار سایت را ببینید:
# فایل hosts (فقط برای آزمایش؛ پس از آن حذف کنید)
0.0.0.0 fonts.googleapis.com
0.0.0.0 fonts.gstatic.com
0.0.0.0 www.google.com
0.0.0.0 www.gstatic.com
0.0.0.0 cdn.jsdelivr.net
0.0.0.0 cdnjs.cloudflare.com
در DevTools هم میتوانید از قابلیت Request blocking برای مسدود کردن دامنهها استفاده کنید. سپس ورود، جستوجو، افزودن به سبد و پرداخت را آزمایش کنید. برای آمادگی سمت سرور هم چکلیست سرور مجازی در قطعی اینترنت را ببینید.
سوالات متداول
سایت من روی هاست ایران است؛ باز هم ممکن است در قطعی کار نکند؟
بله. اگر DNS دامنه، فونتها، کپچا یا کتابخانههای سایت از سرورهای خارجی بارگذاری شوند، سایت کند یا ناقص میشود، حتی اگر هاست کاملاً سالم باشد.
میزبانی محلی فونت گوگل مجاز است؟
فونتهای Google Fonts با مجوزهای آزاد منتشر شدهاند و میزبانی آنها روی سرور خودتان مجاز است. مجوز هر فونت را پیش از استفاده بررسی کنید.
آیا حذف Google Analytics روی سئو اثر دارد؟
خیر. Analytics فقط ابزار آمار است و روی رتبه اثری ندارد. بارگذاری async آن کافی است.
بعد از رفع محدودیت باید تنظیمات را برگردانم؟
میزبانی محلی فونت و کتابخانهها را نگه دارید؛ به سرعت سایت کمک میکند. فقط مسدودسازی درخواستهای خارجی وردپرس را بردارید تا بهروزرسانیها دریافت شوند.
هاست و سرور داخلی با پشتیبانی فنی
برای میزبانی سایت روی زیرساخت داخلی، هاست تراست هاست و برای بهینهسازی و رفع وابستگیهای سایت، خدمات پشتیبانی سرور را ببینید.