میزبانی روی سرور ایران فقط تضمین میکند که فایلهای خود سایت از داخل کشور میآیند. ولی صفحهی یک سایت معمولی دهها فایل را از جاهای دیگر هم میخواهد: فونت از گوگل، کپچا از گوگل، کتابخانههای جاوااسکریپت از CDNهای خارجی، ابزار آمار، نقشه، ویدیو، ابزار چت. هر کدام از اینها که از ایران کند یا بسته باشد، صفحه را معطل میکند: متن دیر دیده میشود، فرم ارسال نمیشود یا ظاهر بههم میریزد. راه حل، پیدا کردن این وابستگیها و آوردنشان روی هاست خودتان است.
وابستگیهای رایج
| چه چیزی | از کجا | اگر در دسترس نباشد | جایگزین |
|---|---|---|---|
| فونتهای وب | fonts.googleapis.com | متن چند ثانیه دیده نمیشود یا با فونت دیگر میآید | فایل فونت روی هاست خودتان |
| reCAPTCHA | google.com/recaptcha | فرم تماس، ورود و ثبتنام کار نمیکند | هانیپات یا کپچای داخلی |
| jQuery، Bootstrap و کتابخانهها | cdnjs، jsDelivr، unpkg | منو، اسلایدر و فرمها از کار میافتد | فایلها روی هاست |
| آیکونها | Font Awesome CDN | مربع خالی بهجای آیکون | فایل محلی یا SVG |
| آمار و تگها | Google Analytics، Tag Manager | معمولاً فقط آمار ثبت نمیشود؛ اگر بد بار شود، صفحه را معطل میکند | بارگذاری غیرهمزمان؛ ابزار آمار داخلی |
| نقشه | Google Maps | کادر خالی | نقشهی داخلی یا تصویر ثابت با لینک |
| ویدیو | YouTube | پخش نمیشود | سرویس ویدیوی داخلی |
| آواتار دیدگاهها | gravatar.com | بخش دیدگاه دیر بار میشود | خاموش کردن آواتار یا آواتار محلی |
| شکلکها و فایلهای وردپرس | s.w.org | تأخیر کوچک | خاموش کردن ایموجی وردپرس |
| بررسی لایسنس و آپدیت افزونهها | سرور سازنده | پیشخوان کند یا معطل میشود | از سمت سایت قابل حل نیست؛ افزونهی کموابستگیتر |
چرا یک فایل کوچک کل صفحه را معطل میکند؟
فایلهای CSS و اسکریپتهایی که در بالای صفحه بار میشوند «مسدودکننده»اند: مرورگر تا جوابشان نیاید، چیزی نمایش نمیدهد. وقتی سرور مقصد کند است، مرورگر صبر میکند؛ و وقتی اصلاً جواب نمیدهد، تا مهلت اتصال (گاهی دهها ثانیه) منتظر میماند. برای همین سایتی که در روز عادی خوب است، در اختلال اینترنت بینالملل با صفحهی سفید طولانی باز میشود.
پیدا کردن وابستگیها
- سایت را در کروم باز کنید، F12 را بزنید و به زبانهی Network بروید.
- صفحه را تازه کنید.
- روی سرستونها راستکلیک و ستون Domain را روشن کنید، بعد بر اساس آن مرتب کنید.
- هر دامنهای غیر از دامنهی خودتان، یک وابستگی است. فهرستش را بنویسید.
- ردیفهای قرمز یا با زمان خیلی بلند را علامت بزنید.
همین کار را برای صفحهی اصلی، یک صفحهی داخلی، صفحهی تماس و (در فروشگاه) صفحهی تسویهحساب تکرار کنید. ابزارهای تست سرعت هم همین فهرست را در Waterfall نشان میدهند. (خواندن Waterfall)
یک تست سادهی دیگر: در همان زبانهی Network، روی یک دامنهی بیرونی راستکلیک و Block request domain را بزنید و صفحه را تازه کنید. میبینید بدون آن سرویس، سایت چه شکلی میشود.
محلی کردن فونت
- فایلهای فونت را با فرمت woff2 تهیه کنید. برای فونت فارسی، فایل را از سازندهی فونت و با مجوز درست بگیرید.
- در پوشهی قالب (ترجیحاً پوستهی فرزند) آپلود کنید.
- در CSS با @font-face معرفی کنید و font-display: swap بگذارید تا متن بلافاصله با فونت جایگزین دیده شود.
- بارگذاری فونت از گوگل را خاموش کنید: در تنظیمات قالب یا صفحهساز معمولاً گزینهای برای آن هست، و افزونههای بهینهسازی هم گزینهی «Remove Google Fonts» یا «Localize» دارند.
بعد از تغییر، دوباره زبانهی Network را ببینید تا مطمئن شوید درخواستی به fonts.googleapis.com و fonts.gstatic.com نمیرود.
کتابخانههای جاوااسکریپت
اگر قالب یا افزونهای jQuery، Bootstrap یا کتابخانهی دیگری را از CDN بار میکند، فایل را دانلود کنید، روی هاست بگذارید و آدرس را عوض کنید. خود وردپرس نسخهی jQuery را همراه دارد و لازم نیست از بیرون بیاید. بعضی افزونههای کش گزینهای برای محلی کردن خودکار فایلهای بیرونی دارند.
چیزهایی که نمیشود محلی کرد
| سرویس | چه کنیم |
|---|---|
| آمار | اسکریپت را async یا با تأخیر بار کنید تا صفحه را مسدود نکند |
| چت آنلاین | بعد از اولین حرکت ماوس یا اسکرول بار شود |
| نقشه و ویدیو | بهجای جاسازی مستقیم، یک تصویر بگذارید که با کلیک بار میشود |
| کپچای خارجی | جایگزین کنید (جلوگیری از اسپم فرم) |
| درگاه پرداخت و پیامک | اینها داخلیاند و وابستگی لازم سایتاند؛ فقط مهلت اتصالشان را کوتاه بگذارید |
وابستگیهای سمت سرور
بعضی وابستگیها در مرورگر دیده نمیشوند، چون خود سرور هنگام ساختن صفحه به بیرون وصل میشود: افزونهای که در هر بار باز شدن پیشخوان لایسنسش را چک میکند، ابزاری که نرخ ارز میگیرد، یا افزونهای که از یک API خارجی داده میخواند. نشانهاش این است که پیشخوان یا صفحههای کشنشده گاهی دهها ثانیه طول میکشند. افزونهی Query Monitor بخش HTTP API Calls دارد که این درخواستها و زمانشان را نشان میدهد. (TTFB بالا، سایتی که به API خارجی وصل میشود)
چکلیست
- هیچ فایل CSS یا فونتی از دامنهی بیرونی در بالای صفحه بار نشود.
- فرمها بدون سرویس خارجی هم ارسال شوند.
- اسکریپتهای جانبی async یا با تأخیر باشند.
- سایت با مسدود کردن همهی دامنههای بیرونی در ابزار مرورگر، هنوز قابل استفاده باشد.
- پیشخوان بدون اتصال به بیرون در زمان معقولی باز شود.
هاست ایران چه کمکی میکند؟
وقتی فایلهای سایت و وابستگیهایش همه روی سرور داخل باشند، سایت در اختلال اینترنت بینالملل هم برای کاربر ایرانی باز میماند. این مزیت فقط وقتی کامل است که وابستگیهای خارجی را برداشته باشید. (هاست ایران یا خارج، انتقال سایت از هاست خارج به ایران)
سوالهای رایج
فونت گوگل روی سئو اثر دارد؟
خودِ فونت نه. تأخیری که میسازد روی LCP و CLS اثر دارد. (Core Web Vitals)
همهی بازدیدکنندههایم خارج از ایراناند.
در آن صورت این وابستگیها مشکل دسترسی ندارند؛ ولی محلی کردن فونت و کتابخانه باز هم سایت را سریعتر میکند، چون اتصال به دامنهی اضافه حذف میشود.
بعد از محلی کردن، آپدیت کتابخانهها چه میشود؟
دیگر خودکار نیست. هر چند ماه نسخهها را بررسی کنید، یا بگذارید قالب و افزونهها فایلهای خودشان را بیاورند.