DNS Prefetching Nedir?

DNS prefetching, tarayıcının ileride gerekebilecek bir alan adını gerçek bağlantı başlamadan önce DNS üzerinden çözümlemeye çalışmasıdır. Böylece kaynak daha sonra istendiğinde alan adının IP adresine çevrilmesi için gereken bekleme süresi daha erken bir aşamada tamamlanabilir.
Bu mekanizma yalnız DNS çözümlemesini öne alır. Kaynağı indirmez, hedef sunucuyla tam bağlantı kurmaz ve kullanıcının ilgili bağlantıyı kesin olarak açacağı anlamına gelmez.
Yüksek olasılıkla kullanılacak hedeflerde gecikmeyi azaltabilir; ancak her alan adını önceden sorgulamak gereksiz ağ etkinliği oluşturur. DNS prefetching bu nedenle bir hız garantisi değil, olası bir sonraki isteğe hazırlık yöntemidir.
Tarayıcı DNS Ön Çözümlemesini Nasıl Yapar?
Tarayıcı bir sayfayı ağdan yüklerken o sayfanın alan adı normalde zaten çözümlenmiştir. Sayfanın daha sonra kaynak isteyeceği farklı alan adları içinse DNS çözümlemesi henüz yapılmamış olabilir. Yazı tipi hizmeti, içerik dağıtım ağı, analiz altyapısı veya kullanıcı etkileşiminden sonra açılacak başka bir site bu duruma örnek olabilir.
Tarayıcı böyle bir hedefi olası bir sonraki kaynak olarak belirlediğinde DNS sorgusunu, gerçek kaynak isteğinden önce başlatabilir. Yanıt kullanılabilir durumda kaldığı sürece sonraki istek DNS aşamasını yeniden beklemeden bağlantının diğer adımlarına geçebilir.
Hedef kaynak hiç istenmezse yapılan sorgu yalnız hazırlık olarak kalır. Sonuç artık kullanılamıyorsa ya da tarayıcı farklı bir çözümleme gerektiğine karar verirse bağlantı sırasında yeni bir DNS sorgusu yapılabilir. Bu yüzden ön çözümleme, daha sonraki isteğin kesin olarak hızlanacağına dair garanti vermez.
dns-prefetch Kaynak İpucu Ne Anlama Gelir?
dns-prefetch bağlantı ilişkisi, bir web belgesinin tarayıcıya belirli bir alan adı için ileride DNS çözümlemesi gerekebileceğini bildirmesidir. Geliştirici, sayfanın henüz bağlantı kurmadığı fakat kullanma olasılığı bulunan harici alan adlarını bu şekilde işaretleyebilir.
Kaynak ipucu bir talimat değildir. Tarayıcı ağ koşulları, kendi kaynak yönetimi, güvenlik veya gizlilik tercihleri nedeniyle ipucunu uygulayabilir, erteleyebilir ya da yok sayabilir. Bu davranışın ayrıntıları tarayıcıya ve çalışma ortamına bağlı olduğundan belirli bir sürümün varsayılanı genel kural gibi kabul edilmemelidir.
Tarayıcılar açık bir ipucu bulunmadan da sayfadaki bağlantıları değerlendirerek bazı alan adlarını önceden çözümleyebilir. Buna karşılık HTML içindeki dns-prefetch ilişkisi, geliştiricinin olası hedefi açıkça belirtmesine yarar. Uygulamalar da kendi ağ katmanlarında benzer ön çözümleme yapabilir; ancak HTML kaynak ipucunun nasıl ele alınacağı web tarayıcısına özgüdür.
DNS Prefetching, Preconnect ve Prerender Arasındaki Farklar
DNS prefetching yalnız alan adının IP adresine çevrilmesini öne alır. Sunucuyla bağlantı kurulması, gerekiyorsa bu bağlantının şifrelenmesi ve HTTP isteğinin gönderilmesi kaynak gerçekten istendiğinde gerçekleşir.
Preconnect daha geniş bir hazırlık yapar. DNS çözümlemesine ek olarak hedefle bağlantı kurmak için gereken ağ adımlarını da önceden başlatmayı amaçlar. Bu nedenle olası zaman kazancı daha büyük olabilir, fakat kullanılmayan bir hedef için daha fazla bağlantı ve istemci kaynağı harcanır.
Prerender ise hedef sayfayı önceden yükleyip arka planda görüntülenmeye hazırlar; desteklenen koşullarda sayfanın betiklerini de çalıştırabilir. DNS prefetching, preconnect ve prerender aynı işlem değildir; her biri farklı hazırlık düzeyi, maliyet ve kullanım olasılığı gerektirir.
DNS Prefetching Ne Zaman Bekleme Süresini Azaltır?
DNS çözümlemesi, önbellekte bulunmayan bir alan adına ilk erişimde bekleme oluşturabilir. Bu işlem sayfanın başka işleri yürütülürken tamamlanırsa tarayıcı ilgili kaynağı istediğinde bağlantının başlaması için daha az bekleyebilir. Etki, özellikle gerçekten kullanılacak harici bir alan adının ilk çözümlemesinde ortaya çıkabilir.
Alan adının sonucu zaten kullanılabilir durumdaysa ön çözümlemenin ek kazancı sınırlı kalır. Kullanıcı hedefe hiç gitmezse ya da sayfa ilgili kaynağı çağırmazsa sorgu bir performans yararı üretmez. Tarayıcının ipucunu uygulamaması da beklenen etkinin oluşmamasına yol açabilir.
DNS yanıt süresi; ağ koşullarına, kullanılan recursive resolver (özyinelemeli DNS çözümleyicisi) hizmetine, mevcut önbelleğe ve tarayıcının planlama kararlarına göre değişir. Bu değişkenler nedeniyle DNS prefetching için sabit bir hız artışı veya her siteye uygulanabilecek kesin bir süre değeri verilemez.
Gereksiz Sorguların Kaynak Maliyeti
İleride kullanılabileceği düşünülerek yapılan her ön çözümleme gerçek bir DNS sorgusu oluşturabilir. Tek bir sorgunun maliyeti küçük görünse de sayfada çok sayıda üçüncü taraf alan adı için ön çözümleme yapılması istemciyi, recursive resolver hizmetini ve ağ bağlantısını gereksiz yere meşgul edebilir.
Tarayıcılar kaynak kullanımını sınırlamak için bazı ipuçlarını birleştirebilir veya yok sayabilir; yine de sayfada çok sayıda hedef belirtmek gereksiz DNS sorgularına yol açabilir. Kaynağın kullanılma olasılığı düşükse, sırf bağlantı sayfada göründüğü için ön çözümlemeye eklenmesi gereksiz sorgu üretir.
Ön çözümleme için en uygun hedefler, sayfanın ilk yüklemesinden sonra yüksek olasılıkla erişilecek ve henüz bağlantı kurulmamış harici alan adlarıdır. Hemen kullanılacak kritik bir hedef için daha kapsamlı hazırlık gerekebilirken, belirsiz hedeflerde hiçbir ipucu vermemek daha dengeli olabilir.
Önceden Yapılan DNS Sorgularını Kimler Görebilir?
DNS prefetching, kullanıcı ilgili kaynağı açmadan önce alan adının DNS sorgusunda görünmesine neden olabilir. Başka bir deyişle ağ üzerinde bir alan adına ilgi sinyali oluşabilir; fakat kullanıcı o hedefle gerçek bağlantı kurmayabilir.
Sorguyu işleyen recursive resolver hizmeti, önceden gönderilen DNS sorgusunu da görebilir. Şifresiz DNS iletişimini izleyebilen ağ yöneticileri veya internet servis sağlayıcıları da sorgulanan alan adını öğrenebilir. DNS trafiği cihaz ile recursive resolver arasında şifreleniyorsa aradaki gözlemcilerin bu görünürlüğü azalır. Ancak sorgulanan alan adı, sorguyu işleyen DNS hizmetinden gizlenmez. Kurumsal DNS kayıt sistemleri, önceden yapılan sorguları da normal DNS etkinliği gibi kaydedebilir.
Özellikle üçüncü taraf alan adları, kullanıcı davranışı gerçekleşmeden görünür hale gelebileceği için seçici davranmak gerekir. Kurumsal ortamlarda yalnız gerekli veriyi toplama, alan adı filtreleme veya denetim politikaları ön çözümlemeyi sınırlayabilir; tarayıcının ipucunu uygulamaması bu bağlamda beklenen bir davranış olabilir.







