BÖLÜM 2
Gezintide ne olur?
Bu bölüm; Chrome'un iç çalışmalarını inceleyen 4 bölümlük bir blog zincirinin 2. bölümüdür. Bundan önceki girdilerde, farklı süreçler ve izleklerin tarayıcının farklı bölümlerini nasıl ele aldığını inceledik. Bu girdide ise, Bir web sitesini görüntülemek için, her süreç ve izleğin; nasıl iletişim kurduğunu daha detaylı bir şekilde inceliyoruz. Web gezintisinin basit bir kullanım örneğine bakalım: siz tarayıcıya bir URL yazarsanız, sonrasında tarayıcı internetten veriyi alır ve bir sayfa görüntüler.
Gezinti bir tarayıcı işlemi ile başlar.
İlk girdide yorumladığımız gibi: CPU, GPU, Bellek ve çoklu işlem mimarisi Sekmenin dışındaki her şey tarayıcı işlemi tarafından işlenir. Tarayıcı işlemlerinde, tarayıcının butonları ve veri giriş alanlarını çeken kullanıcı arayüzü; internetten veri çekmeyi sağlayan, protokol yığını ile ilgilenen, ağ izleği; dosya erişimlerini denetleyen depolama izleği gibi bir çok izlek bulunur. Adres çubuğuna bir URL yazdığınızda girdiniz, tarayıcı işleminin kullanıcı arayüzü izleği tarafından işlenir.
Basit bir gezinti...
Adım 1: Girdi işlemek
Bir kullanıcı adres çubuğuna yazmaya başladığında, kullanıcı arayüzü izleğine sorulan ilk şey "Bu bir arama sorgusu mu yoksa bir URL mi?" (döngüsü) olur. Chrome'da, adres çubuğu da bir arama giriş alanıdır, bu yüzden kullanıcı arayüzü izleğinin sizi bir arama motoruna mı yoksa bir siteye mi göndereceğine karar vermesi gerekir.
Adım 2: Gezintiye başlamak
Bir kullanıcı enter tuşuna bastığında, kullanıcı arayüzü, site içeriğini almak için bir ağ çağrısı başlatır. Yükleme çubuğu bir sekmenin köşesinde görüntülenir ve ağ izleği, DNS incelemesi ve TLS Bağlantısı kurma isteği gibi uygun protokollerden geçer.
Bu noktada, ağ izleği HTTP 301 gibi bir sunucu yönlendirme üstbilgisi alabilir. Bu durumda, ağ izleği, sunucunun yeniden yönlendirmek istediği kullanıcı arayüzü izleğiyle iletişim kurar. Sonrasında başka bir URL isteği başlatılır.
Adım 3: Yanıtı okumak
Yanıt gelmeye başladığında, ağ izleği eğer gerekirse akışın ilk birkaç baytına bakar. Yanıtın (önceden belirlenen) "İçerik Türü" başlığı ne tür bir veri olduğunu söylemelidir, ancak eksik ya da yanlış olabilme ihtimaline karşı MIME (çok amaçlı internet posta uzantısı) adı verilen dinleme işlemi yapılır. Bu kaynak kodda açıklandığı üzere ince bir iştir. Farklı tarayıcıların yük bindirme ve içerik türü belirlenmesinde nasıl bir yol izlediğini görmek için yorumu okuyabilirsiniz.
Eğer gelen yanıt bir HTML dosyası ise, sonraki adım verileri oluşturma işlemine geçmektir ancak ZIP dosyası gibi (başka uzantıdaki) bir veri dosyası ise, bu bir indirme isteğidir, bu yüzden verileri indirme yöneticisine iletmeleri gerekir.
Bu aynı zamanda Güvenli-Tarama kontrolünün gerçekleştiği yerdir. Alan adı ve yanıt verileri kötü amaçlı bir siteyle eşleşiyor gibi görünüyorsa, ağ izleğini bir uyarı sayfası görüntülemesi için uyarır. Ek olarak; sitelerde hassas verilerin işlenip, işlenmediğinden emin olmak için Kaynak Okuma Engellemesi (CORB) adlı denetim gerçekleşir.
Adım 4: Oluşturma işlemini bulmak
Tüm denetimler yapılıp, ağ izleği tarayıcının istenen siteye gitmesi gerektiğinden emin olduktan sonra, ağ izleği kullanıcı arabirimine verinin hazır olduğunu bildirir. Daha sonrasında, kullanıcı arayüzü izleği web sayfasının oluşturulmasına devam edecek bir oluşturucu işlemi bulur.
Ağ isteğinin yanıt alması yüzlerce milisaniye sürebileceğinden dolayı işlemi hızlandırmak için bir optimizasyon uygulanır. Zaten kullanıcı arayüzü izleği, ağ izleğine URL isteği gönderdiğinde onların hangi siteye gittiklerini bilir ve paralel olarak bir oluşturma işlemini bulmaya veya başlatmaya çalışır. Bu şekilde, eğer her şey beklendiği şekilde giderse, ağ izleği veri aldığında, oluşturucu işlemi bekleme durumunda olur. Eğer gezinme esnasında siteler arasında bir yönlendirme işlemi yapılıyorsa, bu bekleme işlemi kullanılamayabilir ve bu durumda farklı bir işlem gerekebilir.
Adım 5: Gezintinin tamamlanması
Veriler ve oluşturucu işlemi hazır olduğuna göre; gezinme işlemini gerçekleştirmek için tarayıcı işleminden, oluşturucu işlemine bir IPC isteği gönderilir. Ayrıca veri akışını da iletir. Böylelikle oluşturma işlemi HTML verilerini almaya devam edebilir. Tarayıcı işlemi, işlemcinin oluşturma işleminde gerçekleştiğini doğruladıktan sonra, gezinme işlemi tamamlanır ve belge yükleme aşaması başlar.
Bu noktada; adres çubuğu, (SSL) güvenlik göstergesi ve site ayarları güncellenir ardından kullanıcı arayüzü izleği yeni sayfanın site bilgilerini yansıtır. Sekmenin oturum geçmişi güncellenir, bu nedenle ileri/geri butonları yeni gezinilen site için güncellenir. Bir sekmeyi veya pencere kapatıldığında oturum geri yüklemesini kolaylaştırmak için oturum geçmişi diskinizde depolanır.
Ek adım: İlk yüklemenin tamamlanması
Gezinme işlemi tamamlandıktan sonra, oluşturma işlemi kaynakları sayfayı oluşturur. Sonraki girdide bu aşamada neler olacağının ayrıntılarını ele alacağız. Oluşturucu, render işlemini bitirdiğinde, tarayıcıya bir IPC isteği gönderir. Bu noktada, kullanıcı arayüzü izleği sekmedeki yükleme çubuğunu durdurur.
Bu noktadan sonra ilk yükleme tamamlanır ancak yine de istemci tarafında JavaScript ile ek kaynaklar yüklenip yeni görünümler oluşturabilir.
Farklı bir siteye geçmek
Gezinme tamamlandı! Ancak kullanıcı adres çubuğuna tekrar farklı bir URL çağırırsa ne olur? Tarayıcı işlemi farklı siteye gitmek için aynı adımları uygular. Ama bunu yapmadan önce; az önce oluşturulan site için, bir geri yükleme (veya çağırma) işlemi uygulayabilir.
Bu; sekmeden çıkmaya çalıştığınızda "Bu siteden ayrılsın mı?" şeklinde bir kutucuk göstererek ekrana bastırılır. Çünkü JavaScript kodunuz da dahil olmak üzere; bir sekmenin içindeki her şey oluşturma işlemi tarafından işlenir. Bundan dolayı tarayıcı işlemine yeni bir gezinme isteği geldiğinde, hazırda bulunan oluşturma işlemini kontrol etmesi gerekir.
Gezinme, oluşturma işleminden başlatıldıysa, oluşturma işlemi önce yükleme işleyicilerini denetler. Sonrasında tarayıcı işlemi tarafından başlatılan gezinme ile aynı süreçten geçer. Tek fark ise, gezinme isteğinin oluşturucu işleminden tarayıcı işlemine başlatılmasıdır.
Yeni gezinme işlemi, mevcut oluşturulmuş olandan farklı bir siteye yapıldığında, yeni gezinmeyi işlemek için ayrı bir oluşturma işlemi çağrılırken, mevcut oluşturma işlemi boşaltma gibi olayları işlemek için tutulur. Daha fazla bilgi için Lifecycle (yaşam döngüsü) uygulamasına göz atabilirsiniz.
Servis çalışanı koşulunda:
Bu gezinti işlemi için son zamanlarda yapılan bir değişiklik ise, servis çalışanının tanıtılmasıdır. Servis çalışanı, uygulama kodunuza ağ proxy'si yazmanın bir yoludur; web geliştiricilerin yerel olarak nelerin önbellekte tutulacağı ve ağdan ne zaman yeni veri alınacağı konusunda daha fazla kontrole sahip olmalarını sağlar. Servis çalışanı sayfayı önbellekten yükleyecek şekilde ayarlanmışsa, ağdan veri istemeye gerek kalmaz.
Bir diğer önemli noktaysa, servis çalışanının bir oluşturma işleminde çalışan JavaScript kodlarıdır. Peki bir gezinme isteği geldiğinde, tarayıcı işlemi sitenin bir servis çalışanına sahip olduğunu nereden bilir?
Bir servis çalışanı kaydedildiğinde, servis çalışanının kapsamı referans olarak tutulur. Gezinme gerçekleştiğinde ağ izleği, alan adını kayıtlı servis çalışanlarına göre denetler ve eğer bu URL için bir servis çalışanı kaydedilmişse; kullanıcı arayüzü izleği, servis çalışanı kodunu yürütmek için bir oluşturucu işlemi bulur. Servis çalışanı önbellekten veri yükleyebilir, böylece ağdan veri isteme ihtiyacını ortadan kaldırabilir ve/veya ağdan yeni kaynaklar isteyebilir.
Gezinme önyüklemesi
Gezinme Ön Yüklemesi, kaynakları hizmet çalışanının başlatılmasına paralel olarak yükleyerek işlemi hızlandıran bir mekanizmadır. Bu istekleri bir başlık ile işaretleyerek sunucuların istekler için farklı içerikler gönderebilmesine izin verir; örneğin, belgenin tamamının yerine yalnızca güncellenmiş verilerin yollanması gibi.
Toparlayalım!
Bu girdide; bir web gezinmesi sırasında neler olduğuna, yani yanıt başlıkları ve (istemci tarafında) JavaScript gibi web uygulama kodunuzun tarayıcı ile nasıl etkileşime girdiğine baktık. Ağdan veri almak için tarayıcıda gerçekleşen adımları bilmek, web gezinmeleri ve önyüklemeler gibi uygulamaların neden geliştirildiğini anlamayı kolaylaştırır. Önümüzdeki girdide, tarayıcımızın sayfaları oluşturmak için HTML/CSS/JavaScript kodlarımızı nasıl işlediğine bir bakacağız.
Konu linki için : Buraya Tıklayın.
Gezintide ne olur?
Bu bölüm; Chrome'un iç çalışmalarını inceleyen 4 bölümlük bir blog zincirinin 2. bölümüdür. Bundan önceki girdilerde, farklı süreçler ve izleklerin tarayıcının farklı bölümlerini nasıl ele aldığını inceledik. Bu girdide ise, Bir web sitesini görüntülemek için, her süreç ve izleğin; nasıl iletişim kurduğunu daha detaylı bir şekilde inceliyoruz. Web gezintisinin basit bir kullanım örneğine bakalım: siz tarayıcıya bir URL yazarsanız, sonrasında tarayıcı internetten veriyi alır ve bir sayfa görüntüler.
Gezinti bir tarayıcı işlemi ile başlar.
İlk girdide yorumladığımız gibi: CPU, GPU, Bellek ve çoklu işlem mimarisi Sekmenin dışındaki her şey tarayıcı işlemi tarafından işlenir. Tarayıcı işlemlerinde, tarayıcının butonları ve veri giriş alanlarını çeken kullanıcı arayüzü; internetten veri çekmeyi sağlayan, protokol yığını ile ilgilenen, ağ izleği; dosya erişimlerini denetleyen depolama izleği gibi bir çok izlek bulunur. Adres çubuğuna bir URL yazdığınızda girdiniz, tarayıcı işleminin kullanıcı arayüzü izleği tarafından işlenir.
Basit bir gezinti...
Adım 1: Girdi işlemek
Bir kullanıcı adres çubuğuna yazmaya başladığında, kullanıcı arayüzü izleğine sorulan ilk şey "Bu bir arama sorgusu mu yoksa bir URL mi?" (döngüsü) olur. Chrome'da, adres çubuğu da bir arama giriş alanıdır, bu yüzden kullanıcı arayüzü izleğinin sizi bir arama motoruna mı yoksa bir siteye mi göndereceğine karar vermesi gerekir.
Adım 2: Gezintiye başlamak
Bir kullanıcı enter tuşuna bastığında, kullanıcı arayüzü, site içeriğini almak için bir ağ çağrısı başlatır. Yükleme çubuğu bir sekmenin köşesinde görüntülenir ve ağ izleği, DNS incelemesi ve TLS Bağlantısı kurma isteği gibi uygun protokollerden geçer.
Bu noktada, ağ izleği HTTP 301 gibi bir sunucu yönlendirme üstbilgisi alabilir. Bu durumda, ağ izleği, sunucunun yeniden yönlendirmek istediği kullanıcı arayüzü izleğiyle iletişim kurar. Sonrasında başka bir URL isteği başlatılır.
Adım 3: Yanıtı okumak
Yanıt gelmeye başladığında, ağ izleği eğer gerekirse akışın ilk birkaç baytına bakar. Yanıtın (önceden belirlenen) "İçerik Türü" başlığı ne tür bir veri olduğunu söylemelidir, ancak eksik ya da yanlış olabilme ihtimaline karşı MIME (çok amaçlı internet posta uzantısı) adı verilen dinleme işlemi yapılır. Bu kaynak kodda açıklandığı üzere ince bir iştir. Farklı tarayıcıların yük bindirme ve içerik türü belirlenmesinde nasıl bir yol izlediğini görmek için yorumu okuyabilirsiniz.
Eğer gelen yanıt bir HTML dosyası ise, sonraki adım verileri oluşturma işlemine geçmektir ancak ZIP dosyası gibi (başka uzantıdaki) bir veri dosyası ise, bu bir indirme isteğidir, bu yüzden verileri indirme yöneticisine iletmeleri gerekir.
Bu aynı zamanda Güvenli-Tarama kontrolünün gerçekleştiği yerdir. Alan adı ve yanıt verileri kötü amaçlı bir siteyle eşleşiyor gibi görünüyorsa, ağ izleğini bir uyarı sayfası görüntülemesi için uyarır. Ek olarak; sitelerde hassas verilerin işlenip, işlenmediğinden emin olmak için Kaynak Okuma Engellemesi (CORB) adlı denetim gerçekleşir.
Adım 4: Oluşturma işlemini bulmak
Tüm denetimler yapılıp, ağ izleği tarayıcının istenen siteye gitmesi gerektiğinden emin olduktan sonra, ağ izleği kullanıcı arabirimine verinin hazır olduğunu bildirir. Daha sonrasında, kullanıcı arayüzü izleği web sayfasının oluşturulmasına devam edecek bir oluşturucu işlemi bulur.
Ağ isteğinin yanıt alması yüzlerce milisaniye sürebileceğinden dolayı işlemi hızlandırmak için bir optimizasyon uygulanır. Zaten kullanıcı arayüzü izleği, ağ izleğine URL isteği gönderdiğinde onların hangi siteye gittiklerini bilir ve paralel olarak bir oluşturma işlemini bulmaya veya başlatmaya çalışır. Bu şekilde, eğer her şey beklendiği şekilde giderse, ağ izleği veri aldığında, oluşturucu işlemi bekleme durumunda olur. Eğer gezinme esnasında siteler arasında bir yönlendirme işlemi yapılıyorsa, bu bekleme işlemi kullanılamayabilir ve bu durumda farklı bir işlem gerekebilir.
Adım 5: Gezintinin tamamlanması
Veriler ve oluşturucu işlemi hazır olduğuna göre; gezinme işlemini gerçekleştirmek için tarayıcı işleminden, oluşturucu işlemine bir IPC isteği gönderilir. Ayrıca veri akışını da iletir. Böylelikle oluşturma işlemi HTML verilerini almaya devam edebilir. Tarayıcı işlemi, işlemcinin oluşturma işleminde gerçekleştiğini doğruladıktan sonra, gezinme işlemi tamamlanır ve belge yükleme aşaması başlar.
Bu noktada; adres çubuğu, (SSL) güvenlik göstergesi ve site ayarları güncellenir ardından kullanıcı arayüzü izleği yeni sayfanın site bilgilerini yansıtır. Sekmenin oturum geçmişi güncellenir, bu nedenle ileri/geri butonları yeni gezinilen site için güncellenir. Bir sekmeyi veya pencere kapatıldığında oturum geri yüklemesini kolaylaştırmak için oturum geçmişi diskinizde depolanır.
Ek adım: İlk yüklemenin tamamlanması
Gezinme işlemi tamamlandıktan sonra, oluşturma işlemi kaynakları sayfayı oluşturur. Sonraki girdide bu aşamada neler olacağının ayrıntılarını ele alacağız. Oluşturucu, render işlemini bitirdiğinde, tarayıcıya bir IPC isteği gönderir. Bu noktada, kullanıcı arayüzü izleği sekmedeki yükleme çubuğunu durdurur.
Bu noktadan sonra ilk yükleme tamamlanır ancak yine de istemci tarafında JavaScript ile ek kaynaklar yüklenip yeni görünümler oluşturabilir.
Farklı bir siteye geçmek
Gezinme tamamlandı! Ancak kullanıcı adres çubuğuna tekrar farklı bir URL çağırırsa ne olur? Tarayıcı işlemi farklı siteye gitmek için aynı adımları uygular. Ama bunu yapmadan önce; az önce oluşturulan site için, bir geri yükleme (veya çağırma) işlemi uygulayabilir.
Bu; sekmeden çıkmaya çalıştığınızda "Bu siteden ayrılsın mı?" şeklinde bir kutucuk göstererek ekrana bastırılır. Çünkü JavaScript kodunuz da dahil olmak üzere; bir sekmenin içindeki her şey oluşturma işlemi tarafından işlenir. Bundan dolayı tarayıcı işlemine yeni bir gezinme isteği geldiğinde, hazırda bulunan oluşturma işlemini kontrol etmesi gerekir.
Gezinme, oluşturma işleminden başlatıldıysa, oluşturma işlemi önce yükleme işleyicilerini denetler. Sonrasında tarayıcı işlemi tarafından başlatılan gezinme ile aynı süreçten geçer. Tek fark ise, gezinme isteğinin oluşturucu işleminden tarayıcı işlemine başlatılmasıdır.
Yeni gezinme işlemi, mevcut oluşturulmuş olandan farklı bir siteye yapıldığında, yeni gezinmeyi işlemek için ayrı bir oluşturma işlemi çağrılırken, mevcut oluşturma işlemi boşaltma gibi olayları işlemek için tutulur. Daha fazla bilgi için Lifecycle (yaşam döngüsü) uygulamasına göz atabilirsiniz.
Servis çalışanı koşulunda:
Bu gezinti işlemi için son zamanlarda yapılan bir değişiklik ise, servis çalışanının tanıtılmasıdır. Servis çalışanı, uygulama kodunuza ağ proxy'si yazmanın bir yoludur; web geliştiricilerin yerel olarak nelerin önbellekte tutulacağı ve ağdan ne zaman yeni veri alınacağı konusunda daha fazla kontrole sahip olmalarını sağlar. Servis çalışanı sayfayı önbellekten yükleyecek şekilde ayarlanmışsa, ağdan veri istemeye gerek kalmaz.
Bir diğer önemli noktaysa, servis çalışanının bir oluşturma işleminde çalışan JavaScript kodlarıdır. Peki bir gezinme isteği geldiğinde, tarayıcı işlemi sitenin bir servis çalışanına sahip olduğunu nereden bilir?
Bir servis çalışanı kaydedildiğinde, servis çalışanının kapsamı referans olarak tutulur. Gezinme gerçekleştiğinde ağ izleği, alan adını kayıtlı servis çalışanlarına göre denetler ve eğer bu URL için bir servis çalışanı kaydedilmişse; kullanıcı arayüzü izleği, servis çalışanı kodunu yürütmek için bir oluşturucu işlemi bulur. Servis çalışanı önbellekten veri yükleyebilir, böylece ağdan veri isteme ihtiyacını ortadan kaldırabilir ve/veya ağdan yeni kaynaklar isteyebilir.
Gezinme önyüklemesi
Gezinme Ön Yüklemesi, kaynakları hizmet çalışanının başlatılmasına paralel olarak yükleyerek işlemi hızlandıran bir mekanizmadır. Bu istekleri bir başlık ile işaretleyerek sunucuların istekler için farklı içerikler gönderebilmesine izin verir; örneğin, belgenin tamamının yerine yalnızca güncellenmiş verilerin yollanması gibi.
Toparlayalım!
Bu girdide; bir web gezinmesi sırasında neler olduğuna, yani yanıt başlıkları ve (istemci tarafında) JavaScript gibi web uygulama kodunuzun tarayıcı ile nasıl etkileşime girdiğine baktık. Ağdan veri almak için tarayıcıda gerçekleşen adımları bilmek, web gezinmeleri ve önyüklemeler gibi uygulamaların neden geliştirildiğini anlamayı kolaylaştırır. Önümüzdeki girdide, tarayıcımızın sayfaları oluşturmak için HTML/CSS/JavaScript kodlarımızı nasıl işlediğine bir bakacağız.
Konu linki için : Buraya Tıklayın.
Son düzenleme: