روش انسداد درخواست‌ های خارجی وردپرس
مقالات تخصصی IT و هاستینگ

انسداد درخواست های خارجی وردپرس جهت افزایش سرعت سایت(راه حل کاربردی در زمان قطعی اینترنت)

در دنیای امروز، عملکرد پایدار وب‌سایت‌ها به کیفیت اینترنت وابسته است. با این حال، ناپایداری یا محدودیت در اینترنت بین‌الملل می‌تواند چالش‌های جدی ایجاد کند، به‌ویژه برای وب‌سایت‌هایی که به منابع خارجی وابسته هستند. یکی از مهم‌ترین چالش‌ها، مدیریت یا انسداد درخواست‌های خارجی است .این موضوع در وب‌سایت‌های وردپرسی اهمیت بیشتری دارد، زیرا هسته سیستم، قالب‌ها و افزونه‌ها اغلب به سرویس‌ها و منابعی خارج از کشور متکی هستند. در شرایط اختلال یا قطع اینترنت، این وابستگی‌ها باعث تأخیر در بارگذاری صفحات و بروز خطاهای Timeout می‌شوند.

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

منظور از انسداد درخواست های خارجی وردپرس چیست

پیش از پرداختن به مباحث تخصصی، لازم است مفهوم درخواست خارجی وب‌سایت به‌صورت دقیق تعریف گردد. در حوزه شبکه و توسعه وب، درخواست خارجی به هر نوع درخواستی اطلاق می‌شود که از سوی مرورگر کاربر در سمت Client یا از طریق پردازشگر PHP در سمت Server، به سرورها و دامنه‌هایی غیر از دامنه اصلی وب‌سایت ارسال می‌گردد. برای نمونه، هنگامی‌ که یک وب‌سایت جهت نمایش فونت‌های خاص، فایل‌هایی را از سرورهای Google Fonts بارگذاری می‌کند یا برای نمایش تصویر پروفایل کاربران از سرویس Gravatar بهره می‌برد و یا به‌منظور دریافت اطلاعاتی نظیر نرخ لحظه‌ای ارز از یک API خارجی استفاده می‌کند، در تمامی این موارد، یک درخواست خارجی به منابع شخص ثالث ارسال شده است.

نحوه انسداد درخواست های خارجی وردپرس

تصویر(1)

انسداد درخواست های خارجی وردپرس در  Frontend

یکی از نخستین نقاطی که در شرایط اختلال اینترنت بین‌الملل از خود واکنش منفی نشان می‌دهد، لایه Frontend یا سمت کاربر است. این لایه مسئولیت بارگذاری منابعی را بر عهده دارد که کاربر مستقیماً با آن‌ها درتعامل است. هر فایلCSS، جاوااسکریپت، فونت وب، تصویر یا چارچوبی که از دامنه‌ای به غیر از سرور اصلی فراخوانی شود، یک درخواست خارجی محسوب می‌گردد. در زمان قطع دسترسی به شبکه جهانی، این درخواست‌ها ممکن است برای مدتی طولانی در وضعیت انتظار (Pending) یا در حال بارگذاری (Loading) باقی مانده و فرآیند کامل شدن صفحه را متوقف سازند. این امر می‌تواند به نمایش ناقص المان‌های بصری، تأخیر در اجرای کدهای تعاملی و در نهایت از کار افتادن بخش‌هایی از رابط کاربری منجر شود.

نکته حائز اهمیت آن است که بخش قابل توجهی از این وابستگی‌ها به صورت پیش‌فرض و بدون دخالت مستقیم مدیر فنی وب‌سایت، توسط قالب‌ها، افزونه‌ها، کتابخانه‌های شبکه توزیع محتوا (CDN)، ابزارهای تحلیل داده و حتی فونت‌های آنلاین به ساختار سایت تزریق می‌شوند. بنابراین، گام نخست برای رفع این گلوگاه، شناسایی دقیق منشأ درخواست‌ها است.

روش شناسایی درخواست‌ های خارجی وب سایت در مرورگر

ابزارهای توسعه‌دهنده (Developer Tools) که به‌صورت پیش‌فرض در اغلب مرورگرهای مدرن در دسترس هستند، به‌عنوان یکی از دقیق‌ترین و کارآمدترین روش‌ها برای بررسی و تحلیل درخواست‌های سمت کاربر شناخته می‌شوند. با استفاده از این ابزارها می‌توان تمامی درخواست‌های ارسالی از مرورگر، از جمله درخواست‌های خارجی، را به‌صورت کامل رصد و ارزیابی کرد. در ادامه، مراحل لازم برای شناسایی این درخواست‌ها ارائه می‌شود:

  1. بارگذاری صفحه مورد نظر در وب‌سایت.
  2. راست کلیک روی صفحه و انتخاب گزینه Inspect (بازرسی) یا استفاده از کلیدهای میانبر:
    • در ویندوز و لینوکس: F12 یا Ctrl + Shift + I
    • در سیستم‌عامل مک:  Cmd + Option + I
  3. رفتن به تب Network (شبکه) و بارگذاری مجدد صفحه (Refresh) تا تمامی درخواست‌های ارسالی ثبت گردند.

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

تصویر (2)

برای تشخیص خارجی بودن یک درخواست وب سایت، مهم‌ترین و دقیق‌ترین معیار، بررسی نشانی اینترنتی (URL) هر Asset یا منبع است. چنانچه نام دامنه (Domain Name) موجود در آدرس آن درخواست با دامنه اصلی وب‌سایت مغایرت داشته باشد، آن درخواست به عنوان «درخواست خارجی» شناسایی می‌گردد. ستون  (Initiator) در مرورگر کروم نیز می‌تواند اطلاعات مفیدی در خصوص فایل یا اسکریپت مسبب این فراخوانی ارائه دهد، اما از آنجا که نحوه نمایش آن در مرورگرهای مختلف متفاوت است، بررسی URL تنها روش استاندارد و قابل اتکا در تمامی مرورگرها تلقی می‌شود.

برای مشاهده URL کامل هر درخواست باید مراحل زیر طی گردد:

  • مرورگر کروم:روی نام درخواست در ستون Name کلیک نموده و در پنل باز شده، به بخش Headers مراجعه و فیلد Request URL را بررسی نمایید.

مراحل انسداد درخواست های خارجی وردپرس

تصویر(3)

  • مرورگر فایرفاکس: در تب Network روی درخواست کلیک نموده و در پنل جزئیات، بخش مربوط به URL را بررسی کنید.

انسداد درخواست های خارجی وردپرس در روزهای قطعی اینترنت

تصویر(4)

شایان ذکر است که رویت وضعیت Pending در ستون Status، نشانه‌ای آشکار از اختلال در برقراری ارتباط با آن سرویس خارجی است.

وابستگی به  Gravatar

یکی از متداول‌ترین انواع درخواست‌های خارجی در وردپرس، مربوط به دریافت تصاویر آواتار کاربران از سرویس Gravatar است. وردپرس به‌صورت پیش‌فرض برای نمایش تصویر نویسندگان و کاربران در بخش دیدگاه‌ها از این سرویس استفاده می‌کند. در شرایطی که دسترسی به اینترنت بین‌الملل با اختلال مواجه شود، تلاش مرورگر برای برقراری ارتباط با دامنه gravatar.com ممکن است موجب ایجاد تأخیر در بارگذاری صفحات گردد. این موضوع به‌ویژه در بخش نظرات و صفحات مرتبط با نویسندگان، کندی محسوسی را نشان می‌دهد.

راهکار غیرفعال‌سازی Gravatar در وردپرس:

برای قطع این وابستگی مسیر زیر در پیشخوان مدیریت وردپرس باید طی گردد:

  1. به بخش تنظیمات ← گفت‌وگوها  مراجعه شود(Settings → Discussion)
  2. در بخش نیم‌رخ‌ها (Avatars)، تیک گزینه نمایش نیم‌رخ‌ها (Show Avatars)  برداشته حذف گردد
  3. تغییرات ذخیره شوند

انسداد درخواست های خارجی وردپرس به صورت گام به گام

تصویر(5)

با این اقدام، وردپرس ارسال هرگونه درخواست به سرورهای Gravatar را متوقف خواهد کرد.

وابستگی به  Google Fonts

بخش قابل‌توجهی از قالب‌ها و صفحه‌سازهای مدرن، به‌منظور ارتقای جلوه‌های بصری، از فونت‌های ارائه‌شده توسط سرویس Google Fonts استفاده می‌کنند. این وابستگی باعث می‌شود مرورگر برای دریافت فایل‌های فونت، درخواست‌هایی را به دامنه‌های fonts.googleapis.com و fonts.gstatic.com  ارسال کند. در شرایطی که دسترسی به شبکه با محدودیت یا اختلال همراه باشد، این درخواست‌ها بدون پاسخ باقی مانده و علاوه بر افزایش زمان بارگذاری، موجب بروز پدیده‌ای نامطلوب به نام جهش فونت (Font Swap) می‌شوند؛ وضعیتی که در آن متن ابتدا با فونت پیش‌فرض نمایش داده شده و سپس به‌صورت ناگهانی تغییر می‌یابد یا در برخی موارد با فونتی ناهماهنگ باقی می‌ماند.

راهکار غیرفعال‌سازی Google Fonts از طریق تنظیمات صفحه‌ساز المنتور:

با توجه به فراگیری استفاده از افزونه  Elementor، این روش به عنوان یک راهکار سریع و بدون کدنویسی معرفی می‌گردد:

  1. به المنتور ← تنظیمات پیشرفته Elementor مراجعه شود Settings → Advanced
  2. در بخش فونت‌های گوگل (Google Fonts)، گزینه غیرفعال (Disable) انتخاب گردد
  3. تغییرات  ذخیره شود

صفر تا صد انسداد درخواست های خارجی وردپرس

تصویر(6)

چنانچه با وجود این تنظیم، کماکان درخواست‌های Google Fonts مشاهده می‌شوند، باید از طریق غیرفعال‌سازی موقت افزونه‌ها یا تغییر قالب، منشأ اصلی فراخوانی شناسایی و برطرف گردد.

وابستگی به Google Tag Manager (GTM)

به‌کارگیری Google Tag Manager با هدف مدیریت متمرکز اسکریپت‌های بازاریابی و ابزارهای تحلیل، نیازمند ارسال درخواست‌هایی به دامنه googletagmanager.com است. در شرایطی که اتصال به اینترنت با اختلال یا قطعی مواجه باشد، این درخواست‌ها در وضعیت Pending باقی می‌مانند و ممکن است اجرای سایر بخش‌های مهم صفحه را با تأخیر مواجه کرده و روند بارگذاری را مختل سازند.

راهکار مدیریت  GTM

ساده‌ترین و قابل‌اطمینان‌ترین راهکار در چنین شرایطی، غیرفعال‌سازی موقت کد مربوط به Google Tag Manager است. با انجام این کار، مرورگر از اجرای اسکریپت جلوگیری کرده و در نتیجه هیچ‌گونه درخواست خارجی به سرورهای مربوطه ارسال نخواهد شد. پس از بازگشت اینترنت بین‌الملل، امکان فعال‌سازی مجدد این کد به‌سادگی فراهم خواهد بود.

پیامدهای فنی Pending ماندن درخواست‌های خارجی

باقی ماندن درخواست‌ها در وضعیت Pending صرفاً یک مشکل ظاهری نیست و تبعات زیر را به همراه دارد:

  • تأخیر در بارگذاری صفحه: (Page Load Delay) مرورگر برای تکمیل Render Tree باید منتظر پایان یافتن این درخواست‌ها)حتی با خطای (Timeout بماند.
  • افزایش مصرف منابع سرور و مرورگر: باز نگه داشتن سوکت‌های ارتباطی متعدد، حافظه موقت (RAM) و پردازنده (CPU) را درگیر می‌کند.
  • بروز خطاهای متوالی و اجرای ناقص اسکریپت‌ها: توقف یک درخواست ممکن است زنجیره اجرای وابستگی‌های جاوااسکریپت را مختل سازد.
  • کاهش چشمگیر تجربه کاربری

روش‌های جایگزین مدیریت منابع  Frontend

علاوه بر روش‌های فوق، رویکردهای حرفه‌ای دیگری نیز وجود دارند:

  • میزبانی محلی منابع: (Self-Hosting)  دانلود فونت‌ها و کتابخانه‌های جاوااسکریپت )مانند jQuery یا (Font Awesome و بارگذاری آن‌ها از هاست داخلی، بهترین و قطعی‌ترین روش حذف وابستگی به CDNهای خارجی است.
  • استفاده از افزونه‌های تخصصی: افزونه‌هایی نظیر Disable and Remove Google Fonts یا Asset CleanUp قادر به کنترل دقیق‌تر منابع بارگذاری شده در هر صفحه هستند.

مراحل گام به گام انسداد درخواست های خارجی وردپرس

تصویر(7)

مدیریت درخواست‌های خارجی در سمت Backend با استفاده از فایل wp-config.php

کنترل درخواست‌های خارجی تنها به سطح مرورگر محدود نمی‌شود و برای رسیدن به پایداری واقعی در شرایط اختلال اینترنت بین‌الملل، لازم است لایه Backend و ارتباطات خروجی PHP نیز به‌صورت دقیق مدیریت شوند. درخواست‌های خروجی سمت سرور (Outbound Requests) معمولاً شامل مواردی مانند بررسی به‌روزرسانی‌های هسته وردپرس، قالب‌ها و افزونه‌ها، اعتبارسنجی لایسنس افزونه‌های تجاری و همچنین فراخوانی APIهای خارجی نظیر سرویس‌های پیامکی یا درگاه‌های پرداخت هستند.

در زمان بروز اختلال در شبکه اینترنت بین الملل، این نوع پردازش‌های PHP ممکن است دچار خطاهای Timeout شوند و در نتیجه، نخ‌های پردازشی (Worker Processes) سرور را درگیر کرده و منابع حیاتی سیستم را اشغال کنند. ادامه این وضعیت می‌تواند در نهایت به کندی شدید یا حتی از دسترس خارج شدن کامل وب‌سایت منجر شود. از این رو، مدیریت کنترل‌شده این سطح از ارتباطات از طریق تنظیمات موجود در فایل پیکربندی wp-config.php نقش مهمی در حفظ پایداری و تداوم سرویس‌دهی ایفا می‌کند.

انسداد درخواست های خارجی وردپرس به صورت کلی

با افزودن قطعه کد زیر به فایل wp-config.php، وردپرس از ارسال هرگونه درخواست HTTP به خارج از سرور اصلی منع می‌گردد:

define('WP_HTTP_BLOCK_EXTERNAL', true);

تعریف فهرست سفید (Whitelist) میزبان‌های مجاز

مسدودسازی کلی ممکن است کارکرد سرویس‌های ضروری داخلی مانند درگاه‌های پرداخت بانکی zarinpal.com  یاshaparak.ir  و سرویس‌دهندگان پیامک را مختل نماید. برای رفع این مشکل، می‌توان دامنه‌های مورد اعتماد را در فهرست سفید قرار داد:

define('WP_ACCESSIBLE_HOSTS', '.zarinpal.com, .shaparak.ir, torob.com, YOURDOMAIN.COM');

توجه به این نکته ضروری است که دامنه خود وب‌سایت (YOURDOMAIN.COM) نیز باید در این فهرست گنجانده شود تا ارتباطات داخلی وردپرس (Loopback Requests) دچار اختلال نگردد.

غیرفعال‌سازی بررسی خودکار بروزرسانی‌ها

برای جلوگیری از تلاش مکرر وردپرس برای اتصال به سرورهای api.wordpress.org در شرایط اختلال، کدهای زیر نیز بهتر است به wp-config.php اضافه گردند:

define('AUTOMATIC_UPDATER_DISABLED', true);

define('WP_AUTO_UPDATE_CORE', false);

این اقدام ارسال درخواست‌های متعدد جهت بررسی نسخه‌های جدید را به طور کامل متوقف می‌نماید.

مدیریت بهینه Cron Job ها و جایگزینی با System Cron

وردپرس از سیستمی با نام WP-Cron برای اجرای وظایف زمان‌بندی شده استفاده می‌کند. این سیستم مبتنی بر بازدید کاربر است و در هر بار لود صفحه، ممکن است یک درخواست HTTP داخلی ایجاد نماید. در شرایط بحرانی شبکه(قطعی اینترنت بین الملل)، برای کاهش بار و قطع وابستگی بهHTTP ، توصیه می‌گردد WP-Cron غیرفعال و معادل سیستمی آن در کنترل پنل هاست فعال گردد.

مراحل اجرا:

  1. غیرفعال‌سازی WP-Cron در wp-config.php
define('DISABLE_WP_CRON', true);
  1. ایجاد یک وظیفه زمان‌بندی شده (Cron Job) در پنل مدیریت هاست مانند DirectAdmin یا cPanel  با دستور زیر:
/usr/local/bin/php /home/USERNAME/public_html/wp-cron.php > /dev/null 2>&1

انسداد درخواست های خارجی وردپرس و سایر cms ها

تصویر(8)

ذخیره‌سازی موقت پاسخ APIها (API Caching)

برای سرویس‌های خارجی که داده‌هایی با بروز رسانی دوره ای ، مانند نرخ ارز یا پیش‌بینی وضعیت آب‌وهوا، ارائه می‌کنند، بهره‌گیری از Transients API در وردپرس یک راهکار ضروری و کارآمد به‌شمار می‌آید. این سازوکار با ذخیره‌سازی پاسخ‌های دریافتی در پایگاه داده، امکان آن را فراهم می‌کند که در صورت بروز اختلال یا قطع ارتباط با API خارجی، وب‌سایت همچنان بتواند آخرین داده‌های ذخیره‌شده را به کاربر نمایش دهد. در نتیجه، علاوه بر کاهش وابستگی لحظه‌ای به سرویس‌های بیرونی، پایداری و تداوم ارائه اطلاعات نیز حفظ خواهد شد. نمونه کد مفهومی برای پیاده‌سازی این تکنیک به شرح زیر است:

این اقدام پیش از بروز بحران شبکه باید پیاده‌سازی گردد تا در هنگام قطعی، وب‌سایت با داده‌های خام مواجه نشود.

$cached_data = get_transient('api_cached_response');

if (false === $cached_data) {

    $response = wp_remote_get('https://api.external-service.com/data');

    if (!is_wp_error($response)) {

        $data = wp_remote_retrieve_body($response);

        set_transient('api_cached_response', $data, 12 * HOUR_IN_SECONDS);

    }

}

چک‌لیست عملیاتی برای پایداری وب سایت در شرایط محدودیت اینترنت

به منظور جمع‌بندی مباحث ارائه شده، رعایت موارد ذیل در یک چک‌لیست می‌تواند تضمین‌کننده پایداری وب‌سایت‌های وردپرسی در مواجهه با محدودیت‌های دسترسی باشد:

۱. شناسایی و عیب‌یابی:

  • بررسی کامل تب Network در Developer Tools مرورگر برای یافتن درخواست‌های خارجی.
  • شناسایی و تحلیل درخواست‌های دارای وضعیت Pending یا .Timeout

۲. مدیریت لایه  Frontend

  • غیرفعال‌سازیGravatar  از تنظیمات گفت‌وگوها.
  • غیرفعال‌سازی Google Fonts   از تنظیمات صفحه‌سازها(خصوصاً Elementor 
  •  کامنت یا غیرفعال کردن موقت کد Google Tag Manager
  • جایگزینی فونت‌ها و اسکریپت‌های حیاتی با نسخه‌های میزبانی محلی (Local Hosting)

۳. مدیریت لایه Backend در فایل wp-config.php 

  • فعال‌سازی WP_HTTP_BLOCK_EXTERNAL
  • تعریفWP_ACCESSIBLE_HOSTS  با فهرست نمودن دامنه‌های داخلی ضروری
  • غیرفعال‌سازی بروزرسانی خودکار هسته   سایت
  • غیرفعال‌سازی WP-Cron و جایگزینی آن با System Cron سمت سرور
  • پیاده‌سازی مکانیزم کش کردن API برای سرویس‌های خارجی پرکاربرد

نتیجه‌گیری

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

همان‌گونه که در این مقاله بررسی شد، شناسایی دقیق وابستگی‌های سمت کاربر از جمله سرویس‌هایی مانند Gravatar یا  Google Fontsو همچنین اعمال محدودیت‌های هدفمند در لایه پردازشی PHP از طریق فایل  wp-config.php، می‌تواند اثرات منفی ناشی از اختلال اینترنت بین‌الملل را تا حد قابل توجهی کاهش دهد. این رویکرد علاوه بر حفظ منابع سرور و بهینه‌سازی زمان بارگذاری صفحات، شرایطی فراهم می‌کند تا حتی در نامساعدترین وضعیت‌های زیرساختی نیز تجربه کاربری قابل قبولی برای کاربران داخلی ارائه شود.

 

اشتراک گذاری:

نظرات

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *