در این پست قصد داریم درباره ارور Reduce DNS lookups و یا ارور Minimize DNS lookups که هر دو به یک مفهوم اشاره دارد، صبحت کنیم و بررسی کنیم منظور این خطا چیست و اینکه رفع آن چگونه باعث بالا بردن سرعت سایت ما میشود.
خلاصهای از خطا Reduce DNS lookups
نام: Reduce DNS lookups
نوع: محتوا
اولویت: پایین
میزان سختی: متوسط
میانگین امتیاز: 70%
DNS lookups چیست ؟
Hostname یا آدرس یک سایت همانند seoraz.com گفته میشود، تمام Hostname ها استعاره از یک IP هستند که به این استعاره alias هم گفته میشود و اگر توجه کرده باشید در تنظیمات DNSها یک نوع رکوردی وجود دارد به نام A، در این نوع رکوردها نام یک سایت (Hostname) را میدهیم تا به یک IP وصل شود.
زمانی که شما یک Hostname را در نوار آدرس مرورگر خود تایپ میکنید مانند seoraz.com سیستم شما به دنبال IP آن میگردد و اگر در خودش نباشد بهوسیله مودم به دنیای بیرون وصل میشود و یک action به نام DNS lookups(جستجوی DNS) ایجاد میکند، ابتدا به سراغ DNS Serverهای ISP محلی (سرویسدهندگان اینترنت) میرود و به دنبال IP یک Hostname که شما تایپ کردید میگردد و اگر درون ISP محلی نباشد به یک DSN Server سطح بالاتر مراجعه میکند همانند ISP های جهانی و حتی اگر پاسخ را در آنها پیدا نکند (که بسیار بعید است) درنهایت به بالاترین مرجع یعنی InterNIC خواهد رسید.
InterNIC پایگاه داده ثبتنام دامنه (Domain Registration Database) وبرترین و بزرگترین DNS Server است . شما میتوانید با مراجعه به آدرس www.internic.net و انتخاب گزینه Whois و سپس واردکردن آدرس یک سایت به جستجو درباره سایت مربوطه و webserver آن بپردازید.
پس به شکل خلاصه DNS lookups یعنی عمل جستجوی IP یک سایت در بین DNS Serverها میباشد. فرآیند DNS lookup تا زمانی که تمام نشود مرورگر نمیتواند فایلهای لازمه برای نمایش سایت را دانلود کند و اصولا این فرآیند زمانی بین 20 تا 120 میلیثانیه به طول میانجامد تا IP یک سایت را پیدا کند.
مثال از DNS Lookup
در این مثال میخواهیم به شما نشان دهیم که چطور یک DNS lookup میتواند بر روی بهینه سازی سرعت سایت تاثیر بگذارد، به همین منظور از یک ابزار آنلاین تست سرعت سایت استفاده میکنیم و ما در اینجا به کمک ابزار webpagetest.org سایت seoraz.com را تست میکنیم. به آدرس ذکر شده رفته و در سربرگ Details به بررسی این موضوع میپردازیم.
طبق عکس، سایت سئوراز درکل از ۳۰ درخواست ساخته شده است که ۳ نوع آن DNS lookup است، نتیجهای که از این تست میتوان گرفت این است که زمان لازم برای پیدا کردن DNSهای موجود در سایت سئوراز حدود 100 میلیثانیه میباشد که این زمان بسیار فوق العاده میباشد و نشان از بهینه سازی صحیح آن است، ولی گاهی ما در پروژههای افزایش سرعت سایت برخوردیم که زمان کل DNS lookup به 2980 رسیده و این یعنی 2.98 ثانیه به زمان کل بارگذاری سایت اضافه میشود. و اگر سعی کنیم میتوانیم این زمان را بهبود دهیم، پس میتوان نتیجه گرفت که DNS lookup میتواند بر سرعت سایت تاثیر مناسبی داشته باشد و بهبود آن باعث بهینه سازی لود صفحات سایت میشود. در پروژهای که اشاره کردیم ما در انتها توانستیم زمان 2980 را به 1201 برسانیم و این نکته بسیار مهم است چرا که در بهبود سازی فقط یک فاکتور دو ثانیه از زمان لود کل وب سایت کاسته شد.
هدف Reduce DNS Lookups هم همین است، میگوید Reduce کنید یعنی کاهش دهید. ترجمه کامل آن میشود زمان جستجوی DNS را کاهش دهید، به عبارت دیگر تعداد دفعات DNS Lookup را کاهش دهید.
نحوه رفع مشکل Reduce DNS lookups
کاهش تعداد DNS lookup ساده به نظر میرسد و میتوان با داشتن سیاست های مناسب به این خواسته رسید.
به سادگی شما میتوانید تعداد دامنههای مجزایی که در سند سایت خود آنها را فراخوانی کردهاید را کاهش دهید. مثلا به عکس بالا توجه کنید، ۳ بار درخواست از نوع DNS lookup بوده است چرا که سه دامنه متفاوت در سند سایت میزفا فراخوانی شده است، که اولی طبیعتا خوده سایت یعنی دامنه seoraz.com است، دومی مربوط به سایت cloudflare است و سومی برای گوگل آنالیتیکس میباشد. در سایتهای ایرانی مخصوصا سایتهای با CMS های اماده همانند وردپرس و جوملا ممکن است به خاطر نصب افزونههای مختلف از شرکتهای متفاوت، چنین خطاهایی بسیار باشد، چرا که هر افزونه ممکن است از سایتهای لازمه برای به اجرا در آمدن در سایت شما فایل هایی را در سند HTML سایتتان لود نماید و این یعنی افزایش DNS lookup در سایت شما. نمونه سایتهای مشهوری که در بسیاری از سایتهای ایرانی وجود دارد توجه نمایید:
- دامنه fonts.googleapis.com : مربوط به فونتهای گوگل میباشد.
- دامنه google-analytics.com : مربوط به ابزار آمارگیر گوگل یعنی گوگل آنالیتیکس
- دامنه maps.googleapis.com : مربوط به مپ گوگل
- دامنه cdnjs.cloudflare.com : مربوط به CDN کلودفلیر
- دامنه amarfa.ir : مربوط به سایت ایرانی برای گرفتن آمار
- دامنه webgozar.com : مربوط به سایت داغون امار گیر
- دامنه logo.samandehi.ir : لوگوی مجوز اخذ شده از ساماندهی محتوای فضای مجازی
- دامنه trustseal.enamad.ir : لوگوی مجوز اخذ شده از سایت ای نماد
- دامنه cdn.onesignal.com : مربوط به سایت onesignal برای ایجاد نوتیفیکیشن در مرورگر کاربران
- و تمام زیردامنههای سایت شما و هر فایلی که از دیگر دامنهها در سند شما بارگذاری شود باعث افزایش DNS lookup میشود.
بنابراین روش اول که اشاره شد جذف چنین سایتهایی برای Reduce DNS lookups میباشد، روش دوم دانلود فایلهایی است که از یک سایت خارجی در سند ما لود میشود و قرار دادن آن فایل در هاست خود یا CDN سایت ما، که این روش باعث بهبود DNS lookups میشود، همانطور که میدانید برای دیدن سایت میزفا حداقل یک DNS lookups یعنی seoraz.com به ناچار به وجود میاید بنابراین وقتی چنین DNS lookups قطعا وجود دارد میتوان فایلهایی که از دیگر سایتها در سایت ما لود میشود را درون هاست خود قرار دهیم و یا اگر CDN داریم در آنجا قرار دهیم. البته ذخیره چنین فایلهای خارجی از دامنههای دیگر در CDN راه بهتری است چرا که باعث کاهش فشار به سرور اصلی سایت شما میشود.
رکورد Canonical Name به اختصار CNAME نام برده میشود و یکی از رکوردهای نسبتا پرکاربرد DNS است، این نوع رکورد DNS که از یک نام دامنه مستعار (alias) استفاده میکند تا به دامنهای دیگر وصل شود، سعی کنید در فراخوانی آدرسها از CNAME در سایت خود استفاده نکنید. چرا که یک رکورد CNAME اشاره میکند به رکورد A و تازه رکورد A به دنبال DNS میگردد تا ای پی سایت را پیدا کند. پس به حداقل رساندن رکوردهای CNAME در بهبود لود سایت کمک میکند.
در سایت ITPOR به نکات خوبی اشاره شده و خلاصه نکات در ۶ جمله کوتاه اورده شده است:
- یک CName به یک اسم Domain یا A Record دیگر اشاره میکند
- یک A Record به یک آدرس IP اشاره میکند
- پیدا کردن یک CName یعنی آغاز یک جستجو (شروع DNS lookups)
- پیدا کردن یک A Record یعنی پایان یک جستجو (پایان DNS lookups)
- تداخل CName های زیاد می تواند باعث ایجاد شدن Loop شود (یعنی افزایش DNS lookups)
- وجود A Record های زیاد هرگز ایجاد Loop در نتایج DNS نمی کند
Defer parsing of JavaScript باعث میشود لود اولیه سایت بهبود یابد و برخی از DNS lookupsها را به تاخیر اندازد.
فعال بودن keep-alive باعث کاهش DNS lookups میشود، زمانی که keep-alive فعال نباشد برای دریافت هر فایل درخواستها به شکل جداگانه ارسال میشود و هر بار برای یک درخواست DNS lookup رخ میدهد، ولی با فعال بودن keep-alive باعث میشود که فقط درخواست DNS lookups برای هر دامنه یک بار رخ دهد و مجموعه درخواستها برای هر دامنه در قالب یک درخواست ارسال میگردد.
تمام موارد مربوط به Make fewer HTTP requests میتواند به رفع خطای Reduce DNS lookups کمک نماید.
درباره DNS caching
تشکر از DNS caching موجود در کامپیوترها که کمک خوبی به افزایش سرعت سایت میکند، چرا که مرورگر دوباره لازم نیست برای پیدا کردن ای پی به DNS Server ها دستوری ارسال کند و از کش لوکال برای پیدا کردن ای پی یک سایت استفاده میکند، البته ذکر این نکته لازم است که وقتی سرور یا هاست یک سایت تغییر کند IP آن سایت هم عوض میشود بنابراین مرورگر شما در حافظهی پنهان یا همان کش DNS خود، از IP قدیمی استفاده میکند و شما نمیتوانید مثل همیشه به سایت مورد نظر متصل شوید.
اگر از مرورگر کروم استفاده می کنید دستور chrome://net-internals/#dns را وارد نمایید تا تمام DNSهایی که در حافظه پنهان خود ذخیره کرده است را مشاهده کنید. برای پاک کردن کش DNS در ویندوز میتوانید با اجرا کردن CMD در حالت Run as administrator دستور ipconfig /flushdns تایپ و اجرا نمایید.
مطلب قبلی : رفع خطای Reduce the number of DOM elements در YSlow جی تی متریکس