8 راه افزایش سرعت و کاهش زمان لود DNS Lookups
8 راه افزایش سرعت و کاهش زمان لود DNS Lookups
راههای مختلفی برای بهینه سازی وب سایت وردپرسی شما موجود است که ممکن است برخی از آنها مهمتر از دیگر راهها باشند. یکی از فاکتورهای مهمی که اغلب نادیده گرفته میشود، کاهش زمان لود DNS Lookups (جستجوهای DNS) میباشد. همانند TTFB و لیتنسی (latency) که قبلا درباره آنها صحبت بسیار کرده بودیم، زمان لود DNS Lookups نیز در دستیابی به اولین اطلاعات وب سایت بسیار موثر است. بنابراین امروز تصمیم گرفتیم که به نحوه کاهش زمان لود DNSLookups و افزایش سرعت آنها بپردازیم و با هم به دلیل اهمیت بالای این فاکتور در سرعت وب سایت پیببریم. توضیحات بیشتر درباره TTFB در مقاله بهبود زمان TTFB بخوانید.
سرفصلهای پست
- 1 منظور از DNS Lookups یا جستجوهای DNS چیست
- 1.1 جستجو DNS ها در Pingdom
- 1.2 بررسی DNS ها در GTMetrix
- 1.3 بررسی DNS ها در WebPagetest
- 2 چگونه زمان لود DNS Lookups را کاهش دهیم
- 2.1 ترفند 1 : از یک ارائه دهنده DNS سریع استفاده کنید.
- 2.2 ترفند 2 : تغییر ورودیهای TTL برای استفاده از کش DNS
- 2.3 ترفند 3 :تعداد دامنهها را کم کنید (hostnames)
- 2.4 ترفند 4 : از سرویسهای جایگزین با DNS پر سرعت استفاده کنید.
- 2.5 ترفند 5 : انتقال و میزبانی منابع در CDN
- 2.6 ترفند 6 : از Prefetching DNS استفاده کنید.
- 2.7 ترفند 7 : به تاخیر انداختن لود جاوااسکریپت
- 2.8 ترفند 8 : از رکوردهای ANAME و CNAME های مسطح استفاده کنید.
- 3 خلاصه:
منظور از DNS Lookups یا جستجوهای DNS چیست
برای فهمیدن اینکه منظور ما از DNS Lookups یا جستجوهای DNS چیست، ابتدا باید با روش کار اصلی DNS آشنا شوید. به طور کلی DNS مخفف کلمه Domain Name Systi و به معنای سامانه نام دامنه میباشد که اساسا به ستون فقرات اینترنت معروف است.دفترچه یادداشتی برای تمام جهان. تمامی طراحی سایت (طراحی سایت شرکتی، طراحی سایت فروشگاهی، سئو سایت) ها و دامنههایی که شما در اینترنت مشاهده میکنید به طور مشخصی به یک IP Address مرتبط میشوند.
برای مثال هنگامی که آدرس Google.com را در اینترنت وارد میکنید، کوئریهای DNS توسط ISP شما برای دریافت اطلاعات مشخص مرتبط به نیم سرورها درخواست میشوند. سپس جمعآوری اطلاعات دامنه توسط IP در پشت صحنه سرور انجام میشود که شما با توجه به اختصاصی بودن IP آدرس وب سایت گوگل شما میتوانید با آی پی 216.58.217.206 نیز وارد این وب سایت شوید. ورود با ای پی آنقدری که به نظر میرسد هم سرگرم کننده نیست.
هنگامی که شما درخواست ورود به یک وب سایت را وارد میکنید اولین چیزی که ISP شما از سرور مقصد درخواست میکند درخواست ارائه اطلاعات DNS وب سایت میباشد. اما در نظر داشته باشید که نیازی نیست برای هر منبعی دوباره DNSجستجو شود. برای مثال به درخواستهای HTTP زیر توجه کنید:
با توجه به اینکه 8 درخواست HTTP در بالا وجود دارد، با این حال، با توجه به اینکه 3 دامنه در درخواستها وجود دارد، 3 جستجو برای اطلاعات DNS لازم است.
اگر نیاز به توضیحات بیشتر و سادهتر درباره نحوه کار DNS Lookups دارید مقاله رفع خطای Reduce DNS lookups را مطالعه فرمایید.
جستجو DNS ها در Pingdom
در زیر به نحوه نمایش درخواستهای بالا در ابزار تست سرعت در ساخت سایت Pingdom میپردازیم. DNS در تحلیل آبشاری به رنگ صورتی میباشد و تحلیل سرعت آن به صورت میلی ثانیه است. وقتی برای اولین بار وب سایتتان را در Pingdom مورد ارزیابی قرار میدهید، این وب سایت به صورت کامل اطلاعات IP آدرس و دیگر کوئریهای DNS شما را دریافت و بررسی میکند. توجه کنید که لازم نیست برای هر ارزیابی برای مثال دامنه cdn.wpdev.ink شروع به ارزیابی DNSها کنید. این دقیقا کاری است که DNS میکند، برای هر دامنه کافیست که تنها یک بار آن را لود کنید. در بالا 8 درخواستHTTP موجود است که از بین اینها تنها 3 درخواست DNS لازم است.
برای هر بار بررسی DNS ها توسط مرورگر و سرور زمان اضافه ای به لود وب سایت اضافه میشود و هیچ اطلاعاتی قبل از بررسی کامل DNS لود نمیشوند.
برای مثال در بررسی 3 DNS بالا ، یکی از 3 DNS برای بررسی 300 میلی ثانیه زمان گرفته است که این زمان بدون در نظر گیری زمان لازم برای بررسی DNS دیگر دامین هاست. بنابر این تاثیر بررسی DNS را بر روی سرعت میتوانید کاملا واضح مشاهده کنید.
هنگامی دوباره وب سایت خود را با Pingdom مورد ارزیابی قرار میدهید، متوجه میشوید که اطلاعات DNS در Pingdom کش شدهاند و دیگر نیازی به لود دوباره آنها نیست. این یکی از دلایلی است که پیشنهاد میشود وب سایت خود را چندین بار در Pingdom مورد ارزیابی دقیق قرار دهید. همانطور که در زیر مشاهده میکنید زمان لود DNS در تصویر زیر 0 ثانیه شده است. این بخش، بخشی است که بیشتر مردم آن را اشتباه در نظر میگیرند اما نگران نباشید، ما در رابطه با کش شدن DNSبیشتر صحبت خواهیم کرد.
بررسی DNS ها در GTMetrix
به طور کلی هر وب سایت بررسی سرعت نوع بررسی خاص خود را دارد ولی بیشتر آنها سرعت بررسی DNS ها را به شما میگویند. در زیر نحوه نمایش زمان بارگیری اطلاعات DNS را در GTMetrix مشاهده میکنید. DNS ها به رنگ سبز و بر اساس میلی ثانیه مشخص شده اند.
بررسی DNS ها در WebPagetest
ابزار بررسی سرعت وب سایت WebPageTest نیز یک ابزار بسیار دقیق و کارآمد در حوزه بررسی DNSها و تجزیه و تحلیل نمودار آبشاری برای سایت میباشد که در صورت علاقه میتوانید از این وب سایت نیز استفاده کنید و به علت تعداد سرورها در سراسر جهان و همچنین آنالیز کلی تمامی اطلاعات وب سایت کاربر بسیار معروف شده است. اطلاعات مربوط به زمان لود DNS در این ابزار در ستون DNS Lookup و با واحد اندازه گیری میلیثانیه قرار میگیرد. برای مثال ما یک وب سایت خبری را به صورت تصادفی انتخاب کردیم و پس از انجام عملیات بررسی توسط این ابزار زمان لود DNS به 6.5 ثانیه رسید!
متاسفانه در بیشتر وب سایتهای خبری، بهینه سازی صورت نمیگیرد و درخواستهای خارجی وب سایتها بسیار زیاد است. با این حال، همانطور که مشاهده میکنید وب سایت خبری مورد مطالعه ما خیلی بیشتر از مقدار قابل قبول لود DNS از نظر کاربران برای لود این فاکتور زمان نیاز دارد. برای همین است که میگوییم DNS ها خیلی اهمیت دارند، زیرا ممکن است باعث کندی بیش از حد و حتی قطعی وب سایت شما شوند.
چگونه زمان لود DNS Lookups را کاهش دهیم
در رابطه با نحوه کار DNS ها اطلاعات کاملی به دست آوردید. حال وقت آن است که به نحوه کاهش زمان لود و افزایش سرعت DNS Lookups بپردازیم، افزایش سرعت لود DNS Lookups اسم های مختلفی دارد همانند:
- Minimize DNS Lookups (به حداقل رساندن جستجوی DNS)
- Reduce DNS Lookups (کاهش جستجوی DNS)
ترفند 1 : از یک ارائه دهنده DNS سریع استفاده کنید.
یکی از نکات مهم در DNS ها این است که DNS ها نیز مانند هاستهای میزبانی ارائه دهندگانی سریع و کند دارند. این اولین چیزی است که باید در وب سایتتان رعایت کنید.
به طور معمول DNS های ثبت شده توسط GoDaddy و NameCheap بسیار ضعیف عمل میکنند. ارائه دهندگان DNS نیز مانند CDN دارای POPs های مختلفی در جای جای جهان هستند. از بهترین و پر سرعتترین ارائه دهندگان DNS میتوانیم به amazon ، Cloudflare ، Dyn و DNS Made Easy اشاره کنیم. همه این ارائه دهندگان دارای زیرساختهایی وسیع برای سریعترین بازده میباشند.
ما با توجه به این موضوع شروع به بررسی تک تک ارائه دهندگان DNS کردیم که پس از بررسیهایمان متوجه شدیم که در ارائه دهندگان تجاری DNS سرعت تفاوت خاصی نمیکند ولی در ارائه دهندگان DNS رایگان به جز CloudFlare بقیه سرعت ضعیفی دارند. بنابراین اگر کسب و کار خیلی پر اهمیتی دارید پیشنهاد میشود که از یک ارائه دهنده DNS تجاری استفاده کنید.
بعضی از ارائه دهندگان بالا در مناطقی سریع تر از دیگری هستند و این خیلی مهم است که شما چگونه به بارگیری DNS نگاه میکنید، جهانی یا محلی؟
وب سایت DNSPerf ابزاری خوب برای مقایسه انواع ارائه دهندگان DNS میباشد و به شما کمک میکند که بهترین ارائه دهنده را انتخاب کنید. آیا میدانستید که شما میتوانید بدون استفاده از امکانات دیگر Cloudflare از بخش DNS آن استفاده کنید؟
ترفند 2 : تغییر ورودیهای TTL برای استفاده از کش DNS
خوشبختانه، با توجه به توضیحاتی که در بالا دادیم، پس از کش شدن DNS در مرورگر شما، دیگر نگرانی برای لود دوباره بررسیهای DNS در دیگر صفحات شما نیست و تنها کافیست که وب سایت شما برای اولین بار لود شود. کش شدن DNSدقیقا مانند کش شدن کامل وب سایت میباشد و تا زمانی که به تاریخ انقضای خود برسد در مرورگر باقی میماند. طول کش DNS از طریق چیزی با نام Time to live (زمان برای زندگی) که مخفف TTL هست، مشخص میشود. اگر TTL وب سایتی بالا باشد، مرورگر شروع به بررسی دوباره DNS میکند.
شما میتوانید ورودیهای TTL وب سایت خود را برای بهبود کش DNS تغییر دهید. قابل توجه است که ISP ها به صورت خودکار DNS شما را کش میکنند ولی با تغییر ورودیهای TTL میتوانید به این کش کمک کنید.
- 300 ثانیه = 5 دقیقه
- 1800 ثانیه : 30 دقیقه
- 3600 ثانیه : 1 ساعت
- 43200 ثانیه : 12 ساعت
- 86400 ثانیه : 24 ساعت
30 دقیقه در هر ساعت برای TTL بیشتر از همه استفاده میشود. با این حال، بعضی از کاربران به علت بروزرسانی پی در پی وب سایتشان TTL کمتری استفاده میکنند. برای مثال Cloudflare به صورت پیشفرض TTL را بر روی 5 دقیقه ذخیره کرده است. این خیلی خوب است که شما به رکوردهای دیگر خود نیز توجه کنید و نسبت به استفاده وب سایت آنها را تنظیم کنید. برای مثال :
- رکوردهای A و AAAA : این رکوردها اغلب درحال تغییر هستند و 5 دقیقه برای کش آنها کافی است.
- رکوردهای CNAME :در بیشتر اوقات این رکوردها تغییر نمیکنند و به نظر من 24 ساعت برای کش آن عالی است.
- رکوردهای MX : کمتر پیش میآید که این رکوردها را تغییر دهید و معمولا 12 ساعت برای کش پیشنهاد میشود.
- رکوردهای TXT : کمتر پیش میآید که این رکوردها را تغییر دهید و معمولا 12 ساعت برای کش پیشنهاد میشود.
به طور کلی وقتی در رابطه با TTL صحبت میکنیم جواب درست یا غلطی وجود ندارد. اما شما با کمی تغییر در ورودیهای TTL و آزمایش آن میتوانید به کش DNS کمک کنید.
ترفند 3 :تعداد دامنهها را کم کنید (hostnames)
یکی از بهترین راهها برای کم کردن زمان بررسی DNS ها کاهش تعداد درخواستها به دامنههای مختلف است یعنی به طور کلی کاهش تعداد دامنههای متصل به وب سایت است. زمان بررسی DNS ها به تعداد درخواستها آنقدری هم مهم نیست، مهم تعداد دامنهها است که هرچقدر کمتر باشد زمان بررسی DNS ها نیز کاهش مییابد. وب سایت خود را با یک ابزار مانند Pingdom بررسی کنید و درخواستهای مهم را مشخص کنید. با توجه به اینکه DNS ها بر اساس IP ها طراحی میشوند، شاید برای شما سوال شود که چرا مردم از دامنهها در DNS خود استفاده میکنند؟! حتما توجه داشته باشید که DNS های شما بر روی یک دامنه ست شده باشند زیرا آی پیها قابل تغییر هستند (مثلا با تغییر هاست) ولی دامنهها تغییر نمیکنند و همیشه خواهند ماند و برای کش کردن فایلها مناسبتر هستند.
ترفند 4 : از سرویسهای جایگزین با DNS پر سرعت استفاده کنید.
درحالی که کم کردن تعداد دامنهها (hostnames) نسبت به این ترفند راحتتر است، با این حال، ما پیشنهاد میکنیم که ابتداDNS هایی که سرعت بررسی آنها بیشتر از بقیه طول میکشد را بیابید. برای مثال در وب سایت زیر یکی از فایلهای جاوااسکریپت لود شده از Crazy Egg برای لود DNS 255 میلی ثانیه زمان لازم دارد که از بقیه DNS ها بیشتر است. این به علت این است که این وب سایت از یک ارائه دهنده DNS خوب استفاده نمیکند.
در این وضعیت شما میتوانید از سرویسهای جایگزین این سرویس مانند Hotjar که دقیقا همان کار را انجام میدهند استفاده کنید که هم از نظر سرعت لود DNS و هم از نظر کارایی بهتر از این سرویس عمل میکنند. این خیلی مهم است که وقتی شما افزونهای را به وردپرستان اضافه میکنید توجه داشته باشید که به عملکرد وب سایت شما آسیبی نمیزند.
ترفند 5 : انتقال و میزبانی منابع در CDN
یکی از راحتترین راههای موجود برای افزایش سرعت وب سایت خود این است که تا جای ممکن منابع خود را به ارائه دهندهCDN خود انتقال دهید. هنگامی که شما در Pingdom وب سایت خود را آزمایش میکنید میزان درخواستهای وب سایت خود را بر اساس هر دامنه را مشاهده میکنید. همانطور که مشاهده میکنید در زیر 93.8 درصد درخواستهای ما از CDN لود میشوند. یک درخواست از هاست خودمان و یک درخواست نیز از گوگل آنالیز میباشد. با انتقال منابع به CDN زمان بررسیDNS ها را به تنها یک DNS ارائه دهنده CDN محدود میکنید و سرعت آن را افزایش میدهید. در مقاله دلایل استفاده از CDN ما به شکل کامل توضیحات لازم را ارائه دادهایم.
به هر حال، وب سایت بالا یک وب سایت خاص بوده است ولی به طور کلی همیشه امکان انتقال اطلاعات به طور کامل به CDN وجود ندارد.
شما در بیشتر مواقع منابعی که نیاز است در سرورهای خارجی لود شوند را در CDN لود خواهید کرد. با این حال، ما پیشنهاد میکنیم که تاجایی که به وب سایتتان آسیب نرساند منابع را از CDN لود کنید. در بیشتر اوقات ما مشاهده میکنیم که کاربران وردپرسی بیشتر منابع خود را در هاست خود لود میکنند و CDN را نادیده گرفتهاند. با انجام این کار شما میتوانید از امکاناتHTTP/2 و parallelization نیز استفاده کنید.
در زیر به نکتههایی اشاره کردهایم که میتواند به شما در این مورد کمک کند.
فونت Awesome :
ما در بیشتر وب سایتهای امروزی مشاهده میکنیم که از فونت Awesome به عنوان فونت آیکون در وب سایت خود استفاده میکنند. ولی مشکلی در استفاده از این فونتها وجود دارد این است که در بیشتر وب سایتهای وردپرسی به صورت کاملا مستقیم از هاست کاربر لود میشوند و کاربران بلد نیستند که آنها را از طریق CDN لود کنند ، در این مواقع پیشنهاد میکنیم که از افزونهای مانند CDN Enabler استفاده کنید.
یک راه دیگر استفاده از cdnjs ویا bootstrapcdn می باشد تا فایلهای فونت را از طریق CDN عمومی لود کنید
با توجه به اینکه با اضافه کردن لینک از طریق CDN های بالا یک رکورد به DNS های شما اضافه میشود پیشنهاد میشود کهCDN مخصوص خود را استفاده کنید. (cdnjs از سرورهای Cloudflare و Bootstrap CDN از سرورهای MAXCDN استفاده میکند)
Gravatars :
اگر از وردپرس استفاده میکنید حتما با تصاویر کاربری پیشفرض آن یعنی Gravatars آشنا هستید. یکی از بهترین راهها برای خلاص شدن از زمان لود DNS های Gravatars استفاده از لود تنبل نظرات میباشد که در سئوراز آموزش فعالسازی آن را نیز منتشر کردهایم و میتوانید با مراجعه به پست لود تنبل تصاویر از آموزشهای عالی ما بهره ببرید. با این حال اینکار زمان لودDNS شما را کاهش نمیدهد و تنها لود آن را تا وقتی که کاربر تا بخش نظرات اسکرول کند به تاخیر میاندازد. بنابراین شما با اینکار در لود بخش اولیه وب سایت خود زمان لود DNS را کاهش دادهاید. پیشنهاد میکنم که حتما مقاله ما در رابطه با افزایش سرعت دیدگاههای وردپرس را مشاهده کنید.
فونتهای گوگل :
با فونتهای گوگل شما یک درخواست اضافه برای لود استایلهای مخصوص فونتهای گوگل به وب سایت خود اضافه میکنید. سپس شما باید از طریق gstatic اقدام به دانلود فونتها کنید. سعی کنید که این نوع فونتها را در وب هاست یاCDN خود به صورت محلی لود کنید و از لود از طریق وب سایتهای واسطهای دیگر جلوگیری کنید. این کار مزایا و معایبی به همراه دارد ولی در کل به سرعت وب سایت شما بسیار کمک میکند.
فونت Awesome ، فونتهای گوگل و gravatars تنها نمونههایی از روشهای کاهش زمان لود DNS ها بودند. آیا شما سعی کردید که بیشتر منابع خود را از طریق CDN ها لود کنید؟
ترفند 6 : از Prefetching DNS استفاده کنید.
یکی دیگر از راههای کاهش زمان لود DNS، استفاده از DNS Prefetching میباشد. این امکان به شما کمک میکند تا DNS ها را در پسزمینه وب سایت خود لود کنید. این کار با اضافه کردن چند خط کد به وب سایتتان امکان پذیر است.به کدهای زیر توجه کنید :
فقط توجه کنید که DNS prefetch در بعضی از مرورگرها مانند Opera Mini پشتیبانی نمیشود ولی نگران نباشید، این پشتیبانی نشدن در عملکرد وب سایت شما تاثیری نمیگذارد ولی برای کاربرانی که از آن مرورگر استفاده میکنند DNS ها دیرتر لود میشوند.
یا اگر از نسخه وردپرس بالای 4.6 استفاده میکنید، میتوانید از ترفندهای منابع منتشر شده کمک بگیرید. توسعه دهندگان با استفاده از متد wp_resource_hints میتوانند با اضافه کردن دامنهها و لینکهای جدید، dns-prefetch، preconnect، prefetch و یا prerender را در پسزمینه وردپرس لود کنند.