Bilgisayar Bilimleri

Oluşturmayı Engelleyen Kaynakları Kaldırmak

İnternet sitelerinin açılma sürelerini "doğrudan" uzatan faktörlerle ilgili olan oluşturmayı engelleyen kaynakları ortadan kaldırın sorununun çözüm yolları olan async, defer, critical css, fontlar ve lazy load hakkında detaylı bir rehber!

Oluşturmayı Engelleyici Nedir (Render Blocking): İnternet sayfalarının hızlı bir şekilde yüklenmesine ve oluşturulmasına doğrudan engel olan dosyalara verilen isimdir. Bu faktörler optimize edilmemiş dosya yüklemelerinden veya optimize edilmemiş ayarlardan kaynaklanır. Oluşturmayı engelleyen kaynaklar ortadan kaldırılarak bir sayfanın sorunsuzca hızlı bir şekilde yüklenmesi sağlanır.

Bu sayede de kullanıcının internet sayfası yüklenene kadar ekran başında uzun süreler bekletilmesi engellenir. İşte bu yazıda oluşturmayı engelleyen kaynakları ortadan kaldırın sorunu hakkında sebepleriyle açıklanmış detaylı çözüm önerileri bulacaksınız. Oluşturmayı engelleyen faktörlerin sebep olduğu yüklenme sorununu tıpkı şu görseldeki gibi ifade edebiliriz:

Site Hızlandırma İşleminde Temel Amaç Oluşturmayı Engelleyen Kaynakları Ortadan Kaldırarak Sayfaların Yüklenme Süresini Kısaltmaktır
Site Hızlandırma İşleminde Temel Amaç Oluşturmayı Engelleyen Kaynakları Ortadan Kaldırarak Sayfaların Yüklenme Süresini Kısaltmaktır

Oluşmayı Engelleyen Kaynakları Ortadan Kaldırın [Çözüm]

1- Async ve Defer Özelliklerini Kullanın

📌 Async Nedir: Sayfa derlendiğinde JavaScript (.js) veya stil (.css) kaynağına denk gelindiğinde, JS veya CSS kaynağının yüklenmesini beklemeden sonraki satırlardan kodun çalışmaya devam etmesini sağlayan yöntemdir. Örnek kullanımlar şu şekildedir:
(Ayrıca Bakınız: JavaScript Nedir? Nerelerde Kullanılır? [Yakında…])

<!-- JS Dosyaları İçin Kullanış Biçimi (Syntax) -->
<!-- 1- Normal Kullanım -->
<script src="dosya.js"></script>
<!-- 2- Async İle Kullanım -->
<script async src="dosya.js"></script>
<!-- CSS Dosyaları İçin Kullanış Biçimi (Syntax) -->
<!-- 1- Normal Kullanım -->
<link href="dosya.css">
<!-- 2- Async İle Kullanım -->
<link rel="stylesheet" href="dosya.css">

📌 Defer Nedir: Tanımlandığı komutun sayfa yüklemesi ve derlenmesi tamamlandıktan sonra yürütülmesini sağlayan yöntemdir. Kritik olmayan CSS ve JS dosyalarının her ikisi için de kullanılabilir. Bu metodun örnek kullanımları şu şekildedir:
(Ayrıca Bakınız: CSS Nedir? Nerelerde Kullanılır?)

<!-- JS Dosyaları İçin Kullanış Biçimi (Syntax) -->
<!-- 1- Normal Kullanım -->
<script src="dosya.js"></script>
<!-- 2- Defer İle Kullanım -->
<script src="dosya.js" defer></script>
<!-- CSS Dosyaları İçin Kullanış Biçimi (Syntax) -->
<!-- 1- Normal Kullanım -->
<link href="dosya.css">
<!-- 2- Defer İle Kullanım -->
<link rel="preload" href="styles.css" as="style" onload="this.onload=null; this.rel='stylesheet'"> 
<noscript><link rel="stylesheet" href="styles.css"></noscript> 
Async ve Defer Metotları Oluşturmayı Engelleyen Kaynakları Ortadan Kaldırın Sorununun En Etkili Çözüm Yoludur
Async ve Defer Metotları Oluşturmayı Engelleyen Kaynakları Ortadan Kaldırın Sorununun En Etkili Çözüm Yoludur
Uyarı: Async özelliği kritik kaynaklar için, defer özelliği de kritik olmayan kaynaklar için idealdir. Defer kullanımında sayfanın görünümü ve işleyişi bozulabileceği için dikkatli olunmalıdır. Defer özelliği ile kullanıldığında sayfanın görünüşünü ve işleyişini bozan dosyalar async ile kullanılmalıdır.

Oluşturmayı engelleyen kaynakları ortadan kaldırmak için önemli olmayan kaynakları ertelemek amacıyla async ve defer metotlarını kullanın. Bu sayede daha az önemli olan JS ve CSS dosyalarını ilk zengin içerikli boya (FCP) tamamlandıktan sonra yükleyip çalıştırabilirsiniz.

Eğer JavaScript dosyalarından dolayı görsel fonksiyonlarda bir bozulma oluyorsa onu defer değil async olarak yükletip çalıştırmayı deneyin.
Hayati önemde olmayan kodları header yerine footer’da yükletin.

Önemli Olmayan Dosyaları Erteleyerek Oluşturmayı Engelleyen Kaynakları Ortadan Kaldırın Sorunu Çözülebilir
Önemli Olmayan Dosyaları Erteleyerek Oluşturmayı Engelleyen Kaynakları Ortadan Kaldırın Sorunu Çözülebilir
Not: Analytics, Google Adsense, Yandex Metrica gibi üçüncü taraf JavaScript ve CSS kodları genellikle oluşturmayı engelleyici değildir. Fakat bu kodların da performansa olumsuz etkilerinin azaltılması için özel olarak optimize edilmesi gerekir. Bu konuda detaylı bilgi almak için şu yazımıza bakabilirsiniz:
(Ayrıca Bakınız: Üçüncü Taraf Kod Nedir? Etkisi Nasıl Azalır?)

2- Satır İçi Kritik CSS Kullanın

📌 Critical Path CSS Nedir: Kullanıcının cihazında sayfa açıldığına ilk görünen kısımlar için gerekli olan stil dosyalarıdır. Kritik CSS sayfaların hızlı bir şekilde oluşturularak internet sitesinin en hızlı şekilde açılmasını sağlayan özel bir yöntemdir. Bu yöntem sayesinde yüklenme önceliği gereksiz kaynaklar yerine önemli olarak işaretlenmiş olanlara verilir.

Kritik CSS İle Ekranın Üst Kısmının Hızlı Bir Şekilde Yüklenmesi Sağlanır
Kritik CSS İle Ekranın Üst Kısmının Hızlı Bir Şekilde Yüklenmesi Sağlanır

Oluşturmayı engelleyen kaynakları ortadan kaldırmak için; sayfa açıldığında ilk görünen kısımların yüklenmesi için zorunlu olan (above the fold) stil kaynaklarını tespit edin ve bu kaynakların kritik yol optimizasyonu ile hızlıca yüklenmesini sağlayın.
Ana sayfa, blog sayfası, diğer sayfalar, içerik sayfaları ve etiket sayfaları için ayrı ayrı kritik yol CSS’leri oluşturun.

Akıllı telefon, tablet ve bilgisayarlar için ayrı ayrı kritik CSS’ler oluşturun.
Kritik olmayan yani sayfa açıldığında ilk başta görünmeyen (below the fold) stil kaynaklarını HTML içerisinde satır içi (inline – internal) olarak yerleştirin.

En yüksek verimi almak için bu işlemi olabildiği kadar mantıklı ve hızlı bir şekilde planlayın.
Çeşitli internet siteleri veya eklentiler aracılığı ile otomatik olarak kolaylıkla kritik CSS oluşturabilirsiniz.

Satır İçi Kritik CSS Örneği [İnline Critical Path CSS]
Satır İçi Kritik CSS Örneği [İnline Critical Path CSS]
Bilgi: Kritik CSS’in olmadığı durumlarda tüm CSS dosyalarını HTML içerisinde satır içi (inline – internal) olarak yerleştirmek oluşmayı engelleyen faktörleri ortadan kaldırmak için kolay bir yöntemdir. Fakat;
• HTML boyutunu önemli şekilde büyüttüğü
• Meta etiketlerini bulunamaz kılarak thumbnail oluşumunu engelleyebildiği
• Sunucu yanıt süresini uzatabildiği için önerilmez.
(Ayrıca Bakınız: Sunucu Yanıt Süresi Nedir? Nasıl Kısaltılır?)

Bu sebeplerden ötürü CSS dosyaları için kritik yol kullanmak ve kalan CSS dosyalarını satır içi yaparak ertelemek en akıllıca hareket olacaktır. Peki CSS için kritik yol nasıl kullanılır? Kritik CSS satırları oluşturulduktan sonra; bu satırlar <head> etiketinden sonra <style> etiketi içerisine alınarak şu şekilde eklenmelidir:

Critical Path CSS Oluşturulur? [Kritik Yol Örneği]
Critical Path CSS Oluşturulur? [Kritik Yol Örneği]

Site hız testi araçlarında genellikle optimize edilmemiş JavaScript ve CSS dosyaları oluşturmayı engelleyen kaynaklar olarak ifade edilir. Fakat görseller ve yazı tipleri gibi dosyalar da optimize edilmedikleri taktirde açılış süresini önemli ölçüde uzatabilirler. [AMA BU HIZ TESTLERİNDE GÖRÜNMEZ!]

3- Tembel Yükleme (Lazy Load) Kullanın

Bir sayfada ne kadar fazla görsel, video ve reklam varsa sayfa boyutu o kadar fazla büyüktür. Sayfa büyüklüğünden ötürü de, sayfanın oluşması için kullanıcının indirmesi gereken dosya miktarı bir o kadar fazladır. İşte bu durum da (özellikle yavaş internet sahibi kullanıcılar için) yine sayfanızı oluşmayı engelleyen (render blocking) haline getirir.

Fakat bu sorunu görsellerin, videoların ve reklamların sayfanın kaldırıldıkça yüklenmesini sağlayan lazy load özelliği ile çözebilirsiniz. Bu konuda detaylı bilgi almak için şu yazımıza göz atabilirsiniz:
(Ayrıca Bakınız: Lazy Load Nedir? Ne İşe Yarar?)

Lazy Load Oluşturmayı Engelleyen Kaynakları Ortadan Kaldırın Sorununun Çözülmesinde Kullanılabilir
Lazy Load Oluşturmayı Engelleyen Kaynakları Ortadan Kaldırın Sorununun Çözülmesinde Kullanılabilir
Profesyonel İpucu: Gerek sayfa yüklenmesi bitene kadar görsel gibi bileşenler için, gerek de sayfanın yüklenmesi tamamlandıktan sonra oluşturulacak banner gibi alanlar için mevcut alanı dolduracak görseller kullanmanız sayfa için gerekli olan hesaplama miktarını azaltacaktır.

Bu sayede her bir görselin indirilmesini beklemek yerine yer tutucu (placeholder) bir görsel ile mevcut alanı kolaylıkla doldurabilir ve bu sayede sayfa açılış hızını arttırabilirsiniz. Örnek bir kullanım şu şekildedir:
Resim Yer Tutucu Kullanımı İle Kodların İşlenmesi Kolaylaştırıldığı İçin Sayfanın Yüklenmesi De Kolaylaştırılır [Örnek]
Resim Yer Tutucu Kullanımı İle Kodların İşlenmesi Kolaylaştırıldığı İçin Sayfanın Yüklenmesi De Kolaylaştırılır [Örnek]

4- Yazı Tiplerini (Fontları) Optimize Edin

Yazı tiplerini sayfanın üst bölümünde (header) yükletmek fontların hızlı yüklenmesini sağlar ama sayfayı oluşmayı engelleyen (render-blocking) hale getirdiği için sayfanın açılma süresi uzar. Bu sebeple yazı tiplerinin header’de yüklenmesinden kaçınılmalıdır.

Fakat yazı tiplerinde font-display özelliği için swap veya optional parametresi ile sayfa yükleninceye kadar özel yazı tiplerini değil de standart yazı tipini göstermek yazı tiplerinin geç yüklenmesini sağlar ama oluşmayı engelleyen (render-blocking) olmadığı için sayfa hemen yüklenir.

Profesyonel İpucu: Yazı tiplerinin “<link rel=preload>” özelliği ve “font-display: optional” parametresi ile yüklenmesi hem sitenin açılma hızını kısalttığı hem de fontlardan kaynaklanan bir takım tasarımsal sorunların (CLS vb.) önüne geçtiği için iyi bir kullanıcı deneyimi sunmanızı sağlar.
(Ayrıca Bakınız: Kullanıcı Deneyimi (UX) Nedir? Nasıl Geliştirilir?)
Fontları Rel=Preload İle Yükleyerek Oluşturmayı Engelleyen Kaynaklar Ortadan Kaldırılabilir [Bu Örnekte Tasarruf ~%40]
Fontları Rel=Preload İle Yükleyerek Oluşturmayı Engelleyen Kaynaklar Ortadan Kaldırılabilir [Bu Örnekte Tasarruf ~%40]

Özet: Oluşturmayı Engelleyen Kaynaklar Optimizasyonu

Oluşturmayı engelleyen kaynaklar sorununa hatalı kaynak yüklemesi kadar temiz kod ilkesine uygun olmadan gelişigüzel kodlanmış temalar da sebep olmaktadır. Bu tarz temaları her ne kadar optimize ederseniz edin, başınıza yeni sorunlar çıkarırlar. Bu sebeple tema seçimi de son derece kritiktir. Bu konuda detaylı bilgi almak için şu yazılarımıza göz atabilirsiniz:
(Ayrıca Bakınız: En İyi WordPress Tema Seçimi Nasıl Yapılır?)
(Ayrıca Bakınız: Kodlama & Programlama Standartları Nelerdir?)

Unutmayınız ki sayfaların geç açılması hem SEO, hem kullanıcı deneyimi hem de kazançlar açısından son derece olumsuz bir durumdur. Sayfa yükleme süresi ile hemen çıkma oranı arasındaki ilişkiyi gösteren bir araştırma şu şekildedir:
(Ayrıca Bakınız: Arama Motoru Optimizasyonu (SEO) Nedir? Nasıl Yapılır?)

Araştırma: Sayfa Açılış Hızı ve Hemen Çıkma Oranı İlişkisi
Araştırma: Sayfa Açılış Hızı ve Hemen Çıkma Oranı İlişkisi

Sitenizdeki hatalı kaynak yönetiminin sayfayı oluşturmayı ne kadar süre ile engellediğini çeşitli araçlar vasıtasıyla ölçebilirsiniz. Bunlardan birisi Google Pagespeed Insights aracıdır. Eğer sayfada oluşturmayı engelleyen kaynaklar var ise, oluşturmayı engelleyen kaynakların listesi ile beraber şu uyarıyı alırsınız:

Oluşturmayı Engelleyen Kaynakları Ortadan Kaldırın: Kaynaklar, sayfanızda ilk boyamayı engelliyor. Kritik JS/CSS’yi satır içinde yayınlama ve kritik olmayan tüm JS/stilleri erteleme seçeneğini değerlendirin. (…)

Kritik öğeleri satır içi yapmanıza veya daha az önemli kaynakları ertelemenize yardımcı olabilecek çeşitli eklentiler vardır. Bu eklentilerin sağlayacağı optimizasyonların tema veya eklentilerinizin özelliklerini bozabileceğine dikkat edin. Bunu engellemek için muhtemelen kodda değişiklik yapmanız gerekecektir

Oluşturmayı Engelleyen Kaynakları Ortadan Kaldırın [Çözüm]
Oluşturmayı Engelleyen Kaynakları Ortadan Kaldırın [Çözüm]

 Google Pagespeed Insights aracı ile ilgili bilgi almak ve bu aracı kullanarak site hızınızı önemli ölçüde nasıl iyileştirebileceğinizi öğrenmek mutlaka şu yazımıza göz atmanızı öneriyoruz:
(Ayrıca Bakınız: Google Pagespeed İle Site Hızlandırma Rehberi)

MrKaptanTR

Bilgisayar mühendisiyim ve boş zamanlarımda kurucusu olduğum bu platformda yazarlık yapıyorum. Özellikle yazılım ve profesyonel içerik üreticiliği alanlarında çalışıyorum. Spor yapmaktan ve gizemli konuları araştırmaktan keyif alıyorum.

4 Yorum

  1. Kardeşim 15 yıllık bir webmaster olarak yazıyorum, tebrik ediyorum seni içeriklerin gayet güzel, yolun açık olsun .

  2. Site hızı ile ilgili teknik sorunları gösteren araçlarda sürekli olarak “oluşturmayı engelleyen kaynakları ortadan kaldırın” yani “eliminate render blocking resources” hatasını alıp duruyordum, sayenizde çok kısa sürede çözdüm. Teşekkürler.

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Başa dön tuşu