Middle
Tarayıcı web sayfasını nasıl işler?
sobes.tech yapay zeka
AI'dan gelen yanıt
Bir tarayıcı tarafından bir web sayfasının işlenme süreci birkaç aşamaya bölünebilir:
-
İstek ve kaynak alma:
- Kullanıcı URL'yi adres çubuğuna yazar veya bir bağlantıya tıklar.
- Tarayıcı, sunucuya HTTP isteği gönderir.
- Sunucu, isteği işler ve genellikle bir HTML belgesi içeren yanıt gönderir.
-
Sözdizimi analizi (Parsing):
- Tarayıcı, HTML belgesini baytlar şeklinde alır.
- Bu baytlar, belirtilen kodlama kullanılarak karakterlere çözülür.
- HTML ayrıştırıcı, belgeyi karakter karakter analiz eder ve DOM (Document Object Model) ağacını oluşturur. DOM, belgenin mantıksal yapısını temsil eder.
<link>(CSS için) veya<script>(JavaScript için) etiketleri tespit edildiğinde, tarayıcı bu kaynakları HTML ayrıştırmasıyla paralel olarak indirmeye başlar.
-
CSSOM Oluşumu:
- CSS ayrıştırıcı,
<style>,<link>ve satır içi stillerden CSS kurallarını analiz eder. - Bu kurallara dayanarak, sayfadaki her öğe için tüm stilleri içeren CSSOM (CSS Nesne Model) ağacı oluşturulur.
- CSS ayrıştırıcı,
-
Render Ağacının Oluşumu:
- Render Ağacı, DOM ve CSSOM'u birleştirir. Sadece sayfada gösterilecek öğeleri ve bunlara ait stilleri içerir.
display: none;CSS kuralı olan öğeler Render Ağacı'na dahil edilmez.
-
Yerleşim (Layout / Reflow):
- Tarayıcı, Render Ağacı temel alınarak her öğenin sayfadaki tam geometrik boyutlarını ve konumlarını hesaplar. Bu işleme Layout veya Reflow denir.
- Layout, ilk Render Ağacı oluşturulurken ve pencere boyutu değişikliklerinde, öğe ekleme/silme veya stiller değiştiğinde gerçekleşir.
-
Çizim (Painting / Repaint):
- Tarayıcı, Render Ağacı ve Layout sonucu bilgileri kullanarak her öğeyi ekranda çizer.
- Görünen özelliklerde (renk, arka plan, opaklık gibi) değişiklikler olduğunda, bu aşama Repaint olarak adlandırılır.
-
Bileşim (Compositing):
- Çizilen öğeler, performans ve animasyon optimizasyonu için farklı katmanlara ayrılabilir.
- Bu katmanlar, ekran üzerinde nihai sayfayı göstermek için birleştirilir.
-
Betiklerin çalıştırılması:
- HTML ayrıştırıcı
<script>etiketiyle karşılaştığında, HTML ayrıştırma işlemi duraklatılır (varsayılan olarak), ve tarayıcı JavaScript kodunu indirir, analiz eder ve çalıştırır. - JavaScript, DOM ve CSSOM'u değiştirebilir, bu da tekrar Layout ve Painting adımlarını tetikleyebilir.
<script>etiketi içinasyncvedeferöznitelikleri, betiklerin yürütülme sırasını ve zamanlamasını etkiler, böylece HTML ayrıştırmasına devam edilebilir.
- HTML ayrıştırıcı
İşte bu akışın yaklaşık bir görselleştirmesi:
HTTP İsteği
↓
HTML Baytları
↓
HTML Ayrıştırıcı
→ CSS Ayrıştırıcı (paralel)
↓ ↓
DOM Ağacı CSSOM Ağacı
↓
Render Ağacı
↓
Layout
↓
Çizim
↓
Bileşim
↓
Ekran Görüntüsü
JavaScript yürütme, farklı aşamalarda kesintiye uğrayabilir ve tekrar adımlarına neden olabilir:
HTML Ayrıştırıcı + `<script>` etiketi
↓
HTML Ayrıştırma duraklatılır
↓
Betik indirilir
↓
Betik analiz edilir
↓
Betik çalıştırılır
↓
(Dom/CSSOM değişebilir → Layout/Çizim tetiklenir)
↓
HTML Ayrıştırma devam eder
Bu süreci anlamak, web sayfalarının performansını optimize etmek için önemlidir.