راههای مختلفی برای بهینه سازی وب سایت وردپرسی شما موجود است که ممکن است برخی از آنها مهمتر از دیگر راهها باشند. یکی از فاکتورهای مهمی که اغلب نادیده گرفته میشود، کاهش زمان لود DNS Lookups (جستجوهای DNS) میباشد. همانند TTFB و لیتنسی (latency) که قبلا درباره آنها صحبت بسیار کرده بودیم، زمان لود DNS Lookups نیز در دستیابی به اولین اطلاعات وب سایت بسیار موثر است. بنابراین امروز تصمیم گرفتیم که به نحوه کاهش زمان لود DNSLookups و افزایش سرعت آنها بپردازیم و با هم به دلیل اهمیت بالای این فاکتور در سرعت وب سایت پیببریم. توضیحات بیشتر درباره TTFB در مقاله بهبود زمان TTFB بخوانید.
سرفصلهای پست
برای فهمیدن اینکه منظور ما از DNS Lookups یا جستجوهای DNS چیست، ابتدا باید با روش کار اصلی DNS آشنا شوید. به طور کلی DNS مخفف کلمه Domain Name Systi و به معنای سامانه نام دامنه میباشد که اساسا به ستون فقرات اینترنت معروف است.دفترچه یادداشتی برای تمام جهان. تمامی طراحی سایت (طراحی سایت شرکتی، طراحی سایت فروشگاهی، سئو سایت) ها و دامنههایی که شما در اینترنت مشاهده میکنید به طور مشخصی به یک IP Address مرتبط میشوند.
برای مثال هنگامی که آدرس Google.com را در اینترنت وارد میکنید، کوئریهای DNS توسط ISP شما برای دریافت اطلاعات مشخص مرتبط به نیم سرورها درخواست میشوند. سپس جمعآوری اطلاعات دامنه توسط IP در پشت صحنه سرور انجام میشود که شما با توجه به اختصاصی بودن IP آدرس وب سایت گوگل شما میتوانید با آی پی 216.58.217.206 نیز وارد این وب سایت شوید. ورود با ای پی آنقدری که به نظر میرسد هم سرگرم کننده نیست.
هنگامی که شما درخواست ورود به یک وب سایت را وارد میکنید اولین چیزی که ISP شما از سرور مقصد درخواست میکند درخواست ارائه اطلاعات DNS وب سایت میباشد. اما در نظر داشته باشید که نیازی نیست برای هر منبعی دوباره DNSجستجو شود. برای مثال به درخواستهای HTTP زیر توجه کنید:
با توجه به اینکه ۸ درخواست HTTP در بالا وجود دارد، با این حال، با توجه به اینکه ۳ دامنه در درخواستها وجود دارد، ۳ جستجو برای اطلاعات DNS لازم است.
اگر نیاز به توضیحات بیشتر و سادهتر درباره نحوه کار DNS Lookups دارید مقاله رفع خطای Reduce DNS lookups را مطالعه فرمایید.
در زیر به نحوه نمایش درخواستهای بالا در ابزار تست سرعت در ساخت سایت Pingdom میپردازیم. DNS در تحلیل آبشاری به رنگ صورتی میباشد و تحلیل سرعت آن به صورت میلی ثانیه است. وقتی برای اولین بار وب سایتتان را در Pingdom مورد ارزیابی قرار میدهید، این وب سایت به صورت کامل اطلاعات IP آدرس و دیگر کوئریهای DNS شما را دریافت و بررسی میکند. توجه کنید که لازم نیست برای هر ارزیابی برای مثال دامنه cdn.wpdev.ink شروع به ارزیابی DNSها کنید. این دقیقا کاری است که DNS میکند، برای هر دامنه کافیست که تنها یک بار آن را لود کنید. در بالا ۸ درخواستHTTP موجود است که از بین اینها تنها ۳ درخواست DNS لازم است.
برای هر بار بررسی DNS ها توسط مرورگر و سرور زمان اضافه ای به لود وب سایت اضافه میشود و هیچ اطلاعاتی قبل از بررسی کامل DNS لود نمیشوند.
برای مثال در بررسی ۳ DNS بالا ، یکی از ۳ DNS برای بررسی ۳۰۰ میلی ثانیه زمان گرفته است که این زمان بدون در نظر گیری زمان لازم برای بررسی DNS دیگر دامین هاست. بنابر این تاثیر بررسی DNS را بر روی سرعت میتوانید کاملا واضح مشاهده کنید.
هنگامی دوباره وب سایت خود را با Pingdom مورد ارزیابی قرار میدهید، متوجه میشوید که اطلاعات DNS در Pingdom کش شدهاند و دیگر نیازی به لود دوباره آنها نیست. این یکی از دلایلی است که پیشنهاد میشود وب سایت خود را چندین بار در Pingdom مورد ارزیابی دقیق قرار دهید. همانطور که در زیر مشاهده میکنید زمان لود DNS در تصویر زیر 0 ثانیه شده است. این بخش، بخشی است که بیشتر مردم آن را اشتباه در نظر میگیرند اما نگران نباشید، ما در رابطه با کش شدن DNSبیشتر صحبت خواهیم کرد.
به طور کلی هر وب سایت بررسی سرعت نوع بررسی خاص خود را دارد ولی بیشتر آنها سرعت بررسی DNS ها را به شما میگویند. در زیر نحوه نمایش زمان بارگیری اطلاعات DNS را در GTMetrix مشاهده میکنید. DNS ها به رنگ سبز و بر اساس میلی ثانیه مشخص شده اند.
ابزار بررسی سرعت وب سایت WebPageTest نیز یک ابزار بسیار دقیق و کارآمد در حوزه بررسی DNSها و تجزیه و تحلیل نمودار آبشاری برای سایت میباشد که در صورت علاقه میتوانید از این وب سایت نیز استفاده کنید و به علت تعداد سرورها در سراسر جهان و همچنین آنالیز کلی تمامی اطلاعات وب سایت کاربر بسیار معروف شده است. اطلاعات مربوط به زمان لود DNS در این ابزار در ستون DNS Lookup و با واحد اندازه گیری میلیثانیه قرار میگیرد. برای مثال ما یک وب سایت خبری را به صورت تصادفی انتخاب کردیم و پس از انجام عملیات بررسی توسط این ابزار زمان لود DNS به ۶.۵ ثانیه رسید!
متاسفانه در بیشتر وب سایتهای خبری، بهینه سازی صورت نمیگیرد و درخواستهای خارجی وب سایتها بسیار زیاد است. با این حال، همانطور که مشاهده میکنید وب سایت خبری مورد مطالعه ما خیلی بیشتر از مقدار قابل قبول لود DNS از نظر کاربران برای لود این فاکتور زمان نیاز دارد. برای همین است که میگوییم DNS ها خیلی اهمیت دارند، زیرا ممکن است باعث کندی بیش از حد و حتی قطعی وب سایت شما شوند.
در رابطه با نحوه کار DNS ها اطلاعات کاملی به دست آوردید. حال وقت آن است که به نحوه کاهش زمان لود و افزایش سرعت DNS Lookups بپردازیم، افزایش سرعت لود DNS Lookups اسم های مختلفی دارد همانند:
یکی از نکات مهم در 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 آن استفاده کنید؟
خوشبختانه، با توجه به توضیحاتی که در بالا دادیم، پس از کش شدن DNS در مرورگر شما، دیگر نگرانی برای لود دوباره بررسیهای DNS در دیگر صفحات شما نیست و تنها کافیست که وب سایت شما برای اولین بار لود شود. کش شدن DNSدقیقا مانند کش شدن کامل وب سایت میباشد و تا زمانی که به تاریخ انقضای خود برسد در مرورگر باقی میماند. طول کش DNS از طریق چیزی با نام Time to live (زمان برای زندگی) که مخفف TTL هست، مشخص میشود. اگر TTL وب سایتی بالا باشد، مرورگر شروع به بررسی دوباره DNS میکند.
شما میتوانید ورودیهای TTL وب سایت خود را برای بهبود کش DNS تغییر دهید. قابل توجه است که ISP ها به صورت خودکار DNS شما را کش میکنند ولی با تغییر ورودیهای TTL میتوانید به این کش کمک کنید.
۳۰ دقیقه در هر ساعت برای TTL بیشتر از همه استفاده میشود. با این حال، بعضی از کاربران به علت بروزرسانی پی در پی وب سایتشان TTL کمتری استفاده میکنند. برای مثال Cloudflare به صورت پیشفرض TTL را بر روی ۵ دقیقه ذخیره کرده است. این خیلی خوب است که شما به رکوردهای دیگر خود نیز توجه کنید و نسبت به استفاده وب سایت آنها را تنظیم کنید. برای مثال :
به طور کلی وقتی در رابطه با TTL صحبت میکنیم جواب درست یا غلطی وجود ندارد. اما شما با کمی تغییر در ورودیهای TTL و آزمایش آن میتوانید به کش DNS کمک کنید.
یکی از بهترین راهها برای کم کردن زمان بررسی DNS ها کاهش تعداد درخواستها به دامنههای مختلف است یعنی به طور کلی کاهش تعداد دامنههای متصل به وب سایت است. زمان بررسی DNS ها به تعداد درخواستها آنقدری هم مهم نیست، مهم تعداد دامنهها است که هرچقدر کمتر باشد زمان بررسی DNS ها نیز کاهش مییابد. وب سایت خود را با یک ابزار مانند Pingdom بررسی کنید و درخواستهای مهم را مشخص کنید. با توجه به اینکه DNS ها بر اساس IP ها طراحی میشوند، شاید برای شما سوال شود که چرا مردم از دامنهها در DNS خود استفاده میکنند؟! حتما توجه داشته باشید که DNS های شما بر روی یک دامنه ست شده باشند زیرا آی پیها قابل تغییر هستند (مثلا با تغییر هاست) ولی دامنهها تغییر نمیکنند و همیشه خواهند ماند و برای کش کردن فایلها مناسبتر هستند.
درحالی که کم کردن تعداد دامنهها (hostnames) نسبت به این ترفند راحتتر است، با این حال، ما پیشنهاد میکنیم که ابتداDNS هایی که سرعت بررسی آنها بیشتر از بقیه طول میکشد را بیابید. برای مثال در وب سایت زیر یکی از فایلهای جاوااسکریپت لود شده از Crazy Egg برای لود DNS ۲۵۵ میلی ثانیه زمان لازم دارد که از بقیه DNS ها بیشتر است. این به علت این است که این وب سایت از یک ارائه دهنده DNS خوب استفاده نمیکند.
در این وضعیت شما میتوانید از سرویسهای جایگزین این سرویس مانند Hotjar که دقیقا همان کار را انجام میدهند استفاده کنید که هم از نظر سرعت لود DNS و هم از نظر کارایی بهتر از این سرویس عمل میکنند. این خیلی مهم است که وقتی شما افزونهای را به وردپرستان اضافه میکنید توجه داشته باشید که به عملکرد وب سایت شما آسیبی نمیزند.
یکی از راحتترین راههای موجود برای افزایش سرعت وب سایت خود این است که تا جای ممکن منابع خود را به ارائه دهندهCDN خود انتقال دهید. هنگامی که شما در Pingdom وب سایت خود را آزمایش میکنید میزان درخواستهای وب سایت خود را بر اساس هر دامنه را مشاهده میکنید. همانطور که مشاهده میکنید در زیر ۹۳.۸ درصد درخواستهای ما از CDN لود میشوند. یک درخواست از هاست خودمان و یک درخواست نیز از گوگل آنالیز میباشد. با انتقال منابع به CDN زمان بررسیDNS ها را به تنها یک DNS ارائه دهنده CDN محدود میکنید و سرعت آن را افزایش میدهید. در مقاله دلایل استفاده از CDN ما به شکل کامل توضیحات لازم را ارائه دادهایم.
به هر حال، وب سایت بالا یک وب سایت خاص بوده است ولی به طور کلی همیشه امکان انتقال اطلاعات به طور کامل به CDN وجود ندارد.
شما در بیشتر مواقع منابعی که نیاز است در سرورهای خارجی لود شوند را در CDN لود خواهید کرد. با این حال، ما پیشنهاد میکنیم که تاجایی که به وب سایتتان آسیب نرساند منابع را از CDN لود کنید. در بیشتر اوقات ما مشاهده میکنیم که کاربران وردپرسی بیشتر منابع خود را در هاست خود لود میکنند و CDN را نادیده گرفتهاند. با انجام این کار شما میتوانید از امکاناتHTTP/2 و parallelization نیز استفاده کنید.
در زیر به نکتههایی اشاره کردهایم که میتواند به شما در این مورد کمک کند.
ما در بیشتر وب سایتهای امروزی مشاهده میکنیم که از فونت Awesome به عنوان فونت آیکون در وب سایت خود استفاده میکنند. ولی مشکلی در استفاده از این فونتها وجود دارد این است که در بیشتر وب سایتهای وردپرسی به صورت کاملا مستقیم از هاست کاربر لود میشوند و کاربران بلد نیستند که آنها را از طریق CDN لود کنند ، در این مواقع پیشنهاد میکنیم که از افزونهای مانند CDN Enabler استفاده کنید.
یک راه دیگر استفاده از cdnjs ویا bootstrapcdn می باشد تا فایلهای فونت را از طریق CDN عمومی لود کنید
با توجه به اینکه با اضافه کردن لینک از طریق CDN های بالا یک رکورد به DNS های شما اضافه میشود پیشنهاد میشود کهCDN مخصوص خود را استفاده کنید. (cdnjs از سرورهای Cloudflare و Bootstrap CDN از سرورهای MAXCDN استفاده میکند)
اگر از وردپرس استفاده میکنید حتما با تصاویر کاربری پیشفرض آن یعنی Gravatars آشنا هستید. یکی از بهترین راهها برای خلاص شدن از زمان لود DNS های Gravatars استفاده از لود تنبل نظرات میباشد که در سئوراز آموزش فعالسازی آن را نیز منتشر کردهایم و میتوانید با مراجعه به پست لود تنبل تصاویر از آموزشهای عالی ما بهره ببرید. با این حال اینکار زمان لودDNS شما را کاهش نمیدهد و تنها لود آن را تا وقتی که کاربر تا بخش نظرات اسکرول کند به تاخیر میاندازد. بنابراین شما با اینکار در لود بخش اولیه وب سایت خود زمان لود DNS را کاهش دادهاید. پیشنهاد میکنم که حتما مقاله ما در رابطه با افزایش سرعت دیدگاههای وردپرس را مشاهده کنید.
با فونتهای گوگل شما یک درخواست اضافه برای لود استایلهای مخصوص فونتهای گوگل به وب سایت خود اضافه میکنید. سپس شما باید از طریق gstatic اقدام به دانلود فونتها کنید. سعی کنید که این نوع فونتها را در وب هاست یاCDN خود به صورت محلی لود کنید و از لود از طریق وب سایتهای واسطهای دیگر جلوگیری کنید. این کار مزایا و معایبی به همراه دارد ولی در کل به سرعت وب سایت شما بسیار کمک میکند.
فونت Awesome ، فونتهای گوگل و gravatars تنها نمونههایی از روشهای کاهش زمان لود DNS ها بودند. آیا شما سعی کردید که بیشتر منابع خود را از طریق CDN ها لود کنید؟
یکی دیگر از راههای کاهش زمان لود DNS، استفاده از DNS Prefetching میباشد. این امکان به شما کمک میکند تا DNS ها را در پسزمینه وب سایت خود لود کنید. این کار با اضافه کردن چند خط کد به وب سایتتان امکان پذیر است.به کدهای زیر توجه کنید :
فقط توجه کنید که DNS prefetch در بعضی از مرورگرها مانند Opera Mini پشتیبانی نمیشود ولی نگران نباشید، این پشتیبانی نشدن در عملکرد وب سایت شما تاثیری نمیگذارد ولی برای کاربرانی که از آن مرورگر استفاده میکنند DNS ها دیرتر لود میشوند.
یا اگر از نسخه وردپرس بالای ۴.۶ استفاده میکنید، میتوانید از ترفندهای منابع منتشر شده کمک بگیرید. توسعه دهندگان با استفاده از متد wp_resource_hints میتوانند با اضافه کردن دامنهها و لینکهای جدید، dns-prefetch، preconnect، prefetch و یا prerender را در پسزمینه وردپرس لود کنند.
اگر شما خواندن فایلهای جاوااسکریپت را به تاخیر بیاندازید آنها تا پایان لود کامل دیگر منابع سایت لود نخواهند شد. اینکار سرعت لود DNS Lookup را افزایش نمیدهد ولی باعث میشود که از بروزرسانی پی در پی آن جلوگیری شود. افزونه Varvy یکی از بهترین پیشنهادها برای بررسی تاثیر تاخیر انداختن لود جاوااسکریپت میباشد. نمونه فایل جاوااسکریپتی که بیشتر وب سایتها از آن استفاده میکنند فایل جاوااسکریپت گوگل آنالیز میباشد که نیازی نیست در هنگام لود شدن وب سایت، لود شود و کافیست که پس از لود وب سایت در پس زمینه لود شود.
در وردپرس افزونههایی مانند Async JavaScript وجود دارند که باعث به تاخیر انداختن لود جاوااسکریپت میشوند. با اینحال بعضی از اسکریپتها در لود وب سایت اهمیت دارند و باید شما قبل از فعالسازی تاخیر در لود آنها را پیدا کرده و در لیست پرش یا استثنا قرار دهید.
افزونه Async Javascript با افزونه Autoptimize نیز به صورت کامل همخوانی دارد و قابل ادغام است و یکی از بهترین پیشنهادها برای به تاخیر انداختن لود جاوااسکریپت میباشد.
البته این بحث به تاخیر انداختن لود جاوا اسکریپت به خطای asynchronous resources در GTmetrix هم برمیگردد که میتواند در آنجا به شکل کامل مطالعه نمایید.
در بعضی از ارائه دهندگان DNS رکوردهای اضافهای وجود دارد که میتواند سرعت لود DNS را افزایش دهد.
رکوردهای ANAME به شما عملکرد کلی رکوردهای CNAME را در سطح ROOT نمایش میدهند. برای مثال در نظر بگیرید که شما CNAME دامنه خود را به صورت www.domain.com پیکربندی کردهاید. ابتدا www. باید نام هاست نیم را پیدا کند و سپس به IP متصل شود. پس اینکار ۲ مرحله ایست. در ANAME مرحله اولیه CNAME حذف شده است و مستقیم به IPمتصل میشود که این باعث افزایش سرعت میشود. دقیقا مانند نمونه زیر :
به طور مشابه Cloudflare هم نوعی سرویس به نام CNAME مسطح دارد که دقیقا همان کار ANAME را انجام میدهد و دادهها را در سطح zone apex نمایش میدهد.
به طور کلی، DNS Lookups یکی از فاکتورهایی است که در بیشتر وب سایتها نادیده گرفته میشود ولی با اندکی توجه مدیر وب سایت میتواند به لود وب سایت خود کمک کند. فقط کافیست که بدانید DNS چطور کار میکند، ارائه دهندگان کند و سریعی برای DNS وجود دارد و یاد بگیرید که چگونه مشکلات بررسی DNS را حل کنید.