یکی از خطاهای رایجی که هنگام تست سرعت سایت با GTmetrix بهش بر میخوریم با عنوان Reduce DNS lookups به ما نمایش داده میشه که مربوط به DNS سایت میشه. این خطا ممکنه با عناوین Reduce DNS lookups یا ارور Minimize DNS lookups هم در تست سرعت با ابزار مختلف تست سرعت سایت نشون داده بشه که هر دو به یک معنی هستند و اشاره به این موضوع دارند که باید تعداد DNS هایی که به دامنههای دیگه اشاره دارند و فایلها یا سورسهایی رو از سایتهای دیگه دریافت میکنند کمتر و کمتر کنیم. چرا که در این صورت ما داخل سایتمون باید اطلاعاتی رو از چندین سرور مختلف که روی دامنههای مجزا قرار دارند دریافت کنیم که در این صورت اگر اون سایتها با کندی مواجه شده باشند یا مشکلی از نظر سرعت داشته باشند، روی سایت ما هم تاثیر خودش رو خواهد گذاشت.
در این آموزش از پایگاه دانش میزبانفا قصد دارم به نحوه برطرف کردن خطای Reduce DNS lookups در Yslow جی تی متریکس بپردازم که با استفاده از این آموزش میتوانید تعداد DNS های خارجی که از دامنههای دیگه برای لود فایلهای مختلف از سایتهای دیگه استفاده میکنید رو کاهش داده و سرعت سایت را افزایش دهید. اما قبل از اینکه به نحوه برطرف کردن این ارور بپردازم لازمه اطلاعاتی رو در مورد DNS بهتون ارائه بدم.
DNS چیست و چطور کار میکنه؟
Domain Name System یا به اختصار DNS رکوردی هستش که نام دامنه شما رو به IP هاست متصل میکنه. در واقع هر هاست یک آدرس IP اختصاصی داره که روی سرور پیاده سازی شده، شما باید اون رو از شرکت های هاستیگ دریافت کنید و DNS کارش این هستش که نام دامنه شما رو به وسیله چند مشخصه به آدرس IP هاست متصل کنه. بنابراین وقتی نام دامنه را در آدرس بار وارد میکنید و منتظر لود شدن سایت هستید، ارائه دهنده اینترنت شما به دنبال IP که روی این دامنه در نظر گرفته شده میگرده و سپس به کمک DNS سایت مورد نظر رو به شما نمایش میده. در این صورت دیگه مثل گذشته و قبل از اینکه دامنهها به وجود بیان، مجبور نیستید که به جای آدرس دامنه آیپی یک سایت رو حفظ کنید.
به عنوان مثال وقتی شما آدرس دامنه mizbanfa.net را در مرورگر وارد میکنید، سیستم شما به دنبال IP این دامنه میگرده و اگه نتونه اونو پیدا کنه با استفاده از اتصال اینترنتی و به کمک شرکت ارائه دهنده اینترنت(ISP) شروع به جستجو در DNS های ارائه دهندههای اینترنت محلی میکنه و اگه موفق به جستجو نشد، این بار در سطح وسیعتری(سطح جهانی) میرسه که در نهایت توی این سطح میتونه اون IP رو به دست بیاره که به این دامنه مرتبط هست. بعد از یافتن آیپی حالا سایت شروع به لود شدن میکنه.
به این مراحلی که برای یافتن آدرس IP یک سایت توسط دامنه طی میشه DNS Lookups یا همون پیدا کردن DNS در بین دیاناس سرورها گفته میشه. تا زمانی که فرآیند پیدا کردن IP توسط DNS Lookups به انتها نرسه، سایت مورد نظر لود نخواهد شد. برای پیدا کردن سایت توسط DNS Lookups هم یک زمان تقریبی بین 20 الی 120 میلی ثانیه طول خواهد کشید.
همونطور که در تصویر میبینید برای پایگاه دانش میزبانفا 83 درخواست داریم که از این تعداد درخواست 13 مورد مربوط به دامنههای دیگه هستند که شامل ساندکلود، فاکس پوش، گوگل و… میشه. این تست توسط سایت webpagetest.org انجام گرفته که میتونید مدت زمان پیدا کردن DNS های خارجی داخل سایتتون رو ببینید. این تست از طریق سرور کشور هند انجام گرفته و اگه کسی از هند وارد سایت بشه به این میزان مدت زمان برای پیدا کردن DNS های خارجی طول میکشه. همونطور که در بالا هم اشاره کردم متوسط زمان لازم برای پیدا کردن DNS بین 20 تا 120 میلی ثانیه است در صورتی که تو این تست تا 170 میلی ثانیه هم داریم که وقتی این حالت رخ بده خیلی میتونه روی لود سایت تاثیر بدی بزاره. حالا اگر تعدادشون بیشتر هم باشه موضوع بدتر خواهد شد. بنابراین کاری که ما باید انجام بدیم این هست که هم تعداد DNS های خارج از سایت رو کمتر کنیم و هم اینکه تا جای ممکن اگه میتونید برخی از اینها رو از سرور خودمون لود کنیم.
به عنوان مثال ممکنه شما از کتابخانه JS در سایت استفاده کنید که از یک سایت خاصی دریافتش میکنید، برای اینکه سرعت بهتری در لود سایت داشته باشید دو راه دارید.
- لود فایلها از دامنه و سرور خودتون که میتونه خطای Reduce DNS lookups رو بهبود بده
- لود فایلها از یک سرور CDN عمومی که در این حالت هم میتونه خطای Use a Content Delivery Network رو بهبود بده
استفاده از این دو روش هم بستگی به این داره که فایل شما چی باشه. اگر استفاده از CDN میتونه سرعت بیشتری بده حتما باید از این گزینه استفاده کنید، اما اگر از CDN استفاده نمیکنید قرار دادن داخل هاست خودتون انتخاب بعدی خواهد بود.
آموزش رفع خطای Reduce DNS lookups در GTmetrix
حالا که با نحوه کارکرد DNS آشنا شدید و دونستید که وقتی وارد یک سایت میشید تا زمان شروع به لود شدن سایت چه مراحلی طی میشه، در ادامه به معرفی راهکارهایی میپردازم که با استفاده ازشون میتونید تعداد دامنههایی که در سایتتون به DNS این دامنهها اشاره دارید رو کمتر کنید. دقت کنید که هر چقدر که بتونید این تعداد رو کمتر کنید میتونه روی سرعت لود شما تاثیر بهتری داشته باشه. البته به شرطی که این دامنهها مربوط به سرورهای CDN نباشند، چرا که استفاده از این دامنهها روی سرور CDN نتیجه بهتری داره تا اینکه ازشون روی دامنه خودمون استفاده کنیم. دلیل این مسئله هم اینه که اگه روی دامنه خودمون هم استفاده کنیم باعث بالا رفتن تعداد درخواست HTTP خواهد شد که در این صورت با خطای Make fewer HTTP requests در GTmetrix مواجه خواهیم شد.
1. کاهش تعداد دامنههای مجزا
اصلیترین دلیلی که باعث به وجود اومدن خطای Reduce DNS lookups در Yslow جی تی متریکس میشه این مورد هست. همه ما از یک سری ابزار در داخل سایتمون استفاده میکنیم که شامل آمارگیر، فونتهای خارجی، نقشه گوگل، کلودفلر، نماد اعتماد و ساماندهی، ارسال پوش و… میشه که بهشون نیاز داریم. این ابزار هم به دلیل اینکه صرفا در اختیار سایت ما نیستند و در بیش از میلیونها سایت به صورت همزمان استفاده میشن، باعث میشه که گاها سرورشون به درستی نتونه پاسخ بده و با کندی مواجه بشن که در این صورت روی همه سایتهای استفاده کننده که سایت ما هم جزو اونها هست تاثیر خواهد گذاشت.
بنابراین قدم اول این هست که ابزار درست رو انتخاب کنیم و تا حد ممکن از استفاده کردن این ابزار دوری کنیم، یا اگه خیلی بهشون نیاز داریم از ابزار جایگزین که کارکرد درستتری دارند استفاده کنیم. به عنوان مثال عامل اصلی بیشتر سایتهای ایرانی استفاده از آمارگیرهایی مثل وبگذر هست که اصلا بهینه سازی نشدند. حتی اگر از کاربران قدیمی اینترنت باشید، این سایت بیش از 5 سال هست که نسخه جدیدی رو تحت عنوان نسخه Beta ارائه داده و هنوز هم که هنوزه، تو همین حالت هست. به جای استفاده از سایتهایی مثل وبگذر میتونید از آمارگیر خود گوگل استفاده کنید.
گزینه بعدی سایتهای اینماد و ساماندهی هستند که بدترین تاثیر رو در سایتها گذاشتند و برای همین راهکاری که برای این سایتها وجود داره اینه که با یک ترفند خاصی که تو مقاله آموزش قرار دادن لوگو اینماد و ساماندهی در سایت به صورت بهینه شده معرفی کردم لوگو این دو سایت رو در سایتتون قرار بدین که تاثیر بدی روی DNS lookup هم نزاره.
مورد پر استفاده بعدی استفاده از فونتهای گوگل هست که برای فونت فارسی اصلا کاربردی نداره و باید حذفشون کنیم. این مشکل بیشتر در سایتهایی هست که با قالبهای آماده وردپرس ساخته شدند و مترجم قالب هم کاری برای بهبود فونتها انجام نداده که هیچ، بلکه فونتهای فارسی رو هم که اضافه کرده باعث شده موقع لود سایت هم فونت گوگل داشته باشیم و هم فونت فارسی که در این بین از فونت گوگل استفاده نمیشه و فقط باعث میشه که تعداد درخواست HTTP بیخودی بالا بره.
اگه از نقشه گوگل هم برای نمایش موقعیت مکانی استفاده میکنید سعی کنید در یک صفحه خاص مثل صفحه تماس باشه و از نمایش نقشه که در بیشتر سایتها توی فوتر سایت قرار میدن دوری کنید. برای اینکه نتیجه بهتری داشته باشید پیشنهاد میکنم فایلهای JS رو با استفاده از راهنمای آموزش رفع خطای Defer parsing of JavaScript در GTmetrix بهینه سازی کنید.
2. استفاده از فایلهای خارجی در سرور سایت
مواردی که مربوط به سایت خارجی هستند رو که در مورد 1 بهشون اشاره کردم سعی کنید داخل سایت خودتون استفاده کنید. شما میتونید به جای اینکه برخی از فایلها رو از خود دامنه سایت خارجی دریافت کنید داخل سایت خودتون آپلود کنید و با تغییراتی که توی مسیر کدنویسی فایل میدین خطای DNS lookup رو کمتر کنید. سعی کنید تا جایی که میتونید میزان استفاده از DNS رو محدود به سایت خودتون و یک شبکه توزیع محتوای CDN بکنید و از منابع دیگه استفاده نکنید. چرا که شما فقط به دامنه خودتون نیاز دارید و سایر دامنهها فقط برای استفاده از ابزار خاصی هستند.
3. استفاده از فایلهای خارجی روی سرور CDN
استفاده از CDN در سایت میتونه روی بهبود سرعت سایت تاثیر خیلی خوبی داشته باشه و بر اساس موقعیت مکانی کاربران فایلها رو از نزدیک ترین سرور در اختیارشون قرار بده. بنابراین سعی کنید زمانی که میخواین از فایلهایی که مربوط به دامنههای خارجی هستند روی دامنه خودتون استفاده کنید در حالت CDN باشه که سرعت بیشتری رو در سایت داشته باشید.
4. کاهش تعداد درخواست HTTP
دلیلی که باعث به وجود اومدن این همه مشکل و تعداد بالا در DNS lookup میشه بالا رفتن تعداد درخواست HTTP هست. شما میتونید با کاهش تعداد درخواست های HTTP که مربوط به دامنههای دیگه هستند این میزان درخواست رو هم بهبود بدین. این کار با ترکیب کردن و ادغام فایلها یا استفاده به صورت درون خطی امکان پذیر خواهد بود.
مثلا ممکنه به یک قطعه کد چند خطی CSS از یک دامنه دیگه که مربوط به ابزار یک سایت هست نیاز داشته باشید که از طریق فایل لود میشه، راهکار خوب در این زمان این هست که کدهای CSS رو بردارید و به صورت درون خطی در هر صفحه که مایل به استفاده ازش هستید استفاده کنید.
5. به حداقل رساندن رکوردهای CNAME
استفاده از CNAME یکی از پرکاربردترین رکوردهای DNS هست. این نوع رکورد از نام یک دامنه دیگه توسط alias استفاده میکنه تا به دامنه دیگه وصل بشه. به عنوان مثال برخی سایتها میان و در یک ساب دامنه از فروشگاههایی که به صورت پورسانتی هستند استفاده میکنند. یعنی اگر دامنه ما mizbanfa.net باشه و بیام از قابلیت پورسانت دادن سایت X روی ساب دامنه shop.mizbanfa.net استفاده کنیم، این کار توسط CNAME انجام میگیره. تو این حالت اتفاقی که میفته اینه که برای نمایش محصولات ابتدا باید DNS lookup شروع به پیدا کردن آیپی ساب دامنه بکنه و بعد از پیدا کردنش توسط alias حالا شروه به پیدا کردن ip سایت فروشگاهی که به صورت پورسانتی هست بکنه و محتوا رو نمایش بده. در این صورت اگر در حالت معمولی 80 میلی ثانیه برای پیدا کردن یک DNS طول بکشه، در این حالت ممکنه تا بیش از دو برابر زمان(بسته به وضعیت سرور سایت نهایی) زمان لازم باشه.
6. استفاده از راهنمای Defer parsing of JavaScript
یکی دیگه از راهکارهایی هم که میتونید به کمکش ارور Reduce DNS lookups رو کمتر کنید استفاده از راهکارهایی هست که داخل مقاله آموزش رفع خطای Defer parsing of JavaScript در GTmetrix به معرفی اونها پرداختم. سعی کنید حتما از سری آموزشهای GTmetrix استفاده کنید.
7. فعال کردن Keep Alive
فعال کردن Keep Alive در سرور این امکان رو به شما میده تا همه فایلهای css و js، تصاویر و… در درخواستهای جدا از هم از سرور خواسته میشه و یکباره شروع به دریافت در یک خط زمانی خواهند کرد. پس در این صورت کاهش تعداد درخواست در سایت ایجاد شده و باعث افزایش سرعت سایت و رفع کندی در سایت خواهد شد. که در تصویر زیر نمونهای از فعال بودن keep alive رو مشاهده میکنید.
امیدوارم این آموزش هم مورد توجه و پسند شما قرار گرفته باشه و با استفاده از اون تونسته باشید نسبت به رفع خطای Reduce DNS lookups در Yslow جی تی متریکس اقدام کنید. در صورتی که در رابطه با این آموزش سوال یا مشکلی داشتید در بخش دیدگاهها اعلام کنید تا در کوتاهترین زمان ممکن پاسخگوی شما باشم.
بدون دیدگاه