Single page application ve multi page application kararları, bir web sitesinin nasıl yüklendiğini, kullanıcılarla nasıl etkileşime girdiğini ve arama motoru tarayıcılarıyla nasıl etkileşime girdiğini tanımlar. Single page application veya SPA, tek bir HTML sayfasını yükler ve kullanıcı siteyle etkileşime girdikçe içeriği dinamik olarak günceller. Buna karşılık, multi page application veya MPA, her eylemin sunucuya bir istek gönderdiği ve tüm sayfayı yeniden yüklediği geleneksel bir web sitesi gibi çalışır. Mimarinin anlaşılması, yüksek performanslı web deneyimleri oluşturmak için gereklidir.
Kullanıcı deneyimindeki temel fark nedir?
Temel ayrım, tarayıcının istekleri ve sayfa geçişlerini nasıl ele aldığında yatar. Bir kullanıcı bir MPA’yı ziyaret ettiğinde, bir bağlantıya yapılan her tıklama veya form gönderimi, sunucudan yeni bir sayfa yüklenmesiyle sonuçlanır. Tarayıcı her yeni görünüm için HTML, CSS ve JavaScript’i ayrıştırmak zorunda olduğundan, bu durum küçük gecikmelere neden olabilir. Buna karşılık, bir SPA gerekli varlıkları başlangıçta bir kez yükler. İlk yüklemeden sonra uygulama, verileri genellikle JSON formatında JavaScript kullanarak dinamik olarak getirir ve mevcut sayfa içeriğini tam bir yenileme olmadan günceller. Bu, özellikle karmaşık kontrol panelleri için geleneksel belge tabanlı web deneyiminden çok masaüstü uygulamasına benzeyen akıcı bir geçiş yaratır.

SPA’nın akıcılığı çekici olsa da, mimari ödünleşimleri beraberinde getirir. SPA için ilk yükleme süresi daha yüksek olabilir çünkü tarayıcı başlangıçta daha büyük bir JavaScript paketini indirmek zorundadır. Geliştiriciler genellikle bu paketleri etkili bir şekilde yönetmek için kod bölme (code splitting) veya tembel yükleme (lazy loading) gibi teknikleri uygulamak zorundadır. Bir MPA, karmaşıklığı farklı bir şekilde yönetir: yalnızca görüntülenen belirli sayfa için gereken kodu sunar. Bu, ilk yükü daha küçük tutar ve genellikle daha hızlı ‘time-to-first-byte’ metriklerine yol açar, bu da sayfalar doğru optimize edildiğinde core web vitals değerlerini geçmeye yardımcı olur.
Mimari, arama motoru görünürlüğünü nasıl etkiler?
Arama motoru optimizasyonu, bu iki model arasında karar verirken en kritik faktördür. Google Search Central belgeleri, SPA’ların güvenilir arama motoru indekslemesi için uygun hidratasyon veya ön render (pre-rendering) gerektirdiğini doğrular. SPA’lar büyük ölçüde istemci tarafı render’a (client-side rendering) dayandığından, tarayıcı doğru yapılandırılmamışsa arama botları ilk JavaScript yürütmesinden sonra oluşturulan içeriği görmekte zorlanabilir. Sunucu tarafı render veya statik oluşturma olmadan, siteniz arama motorları için görünmez kalabilir.
MPA’lar, arama motoru tarayıcıları için daha doğrudan bir yol sağlar. Her sayfa kendi sunucu tarafında oluşturulmuş HTML’i ile ayrı bir URL olarak var olduğundan, arama botları karmaşık JavaScript çalıştırmaya gerek kalmadan sayfa başlıklarını, meta verileri ve gövde içeriğini kolayca tanımlayabilir. Bu, MPA’ları bloglar, haber portalları veya organik arama trafiğinin önemli bir gelir kaynağı olduğu büyük e-ticaret platformları gibi içerik açısından zengin siteler için varsayılan seçim haline getirir. Bir SPA seçerseniz, her görünümün indeksleyiciler için erişilebilir olmasını sağlamak için sitenizin render hattını yönetmeye ek geliştirme kaynakları yatırmanız gerekir.

Ne zaman single page application seçmelisiniz?
SPA’lar, kullanıcı durumunun sık sık değiştiği etkileşimli uygulamalar için idealdir. Proje yönetimi yazılımı, e-posta istemcileri veya kullanıcının tek bir oturumda uzun süre geçirdiği sosyal medya akışları gibi araçları düşünün. Bu ortamlarda, tam sayfa yenilemelerinin olmaması önemli bir avantajdır. İlk uygulama kabuğu yüklendikten sonra etkileşimler anında gerçekleşir. Kullanıcılar, uygulama içindeki görevler arasında geçiş yaparken tarayıcının gezinme menüsünü veya kenar çubuğunu yeniden oluşturmasını beklemek zorunda kalmazlar.
Geliştiriciler bu deneyimleri oluşturmak için genellikle React, Vue veya Angular gibi çerçeveler kullanırlar. Bu araçlar, karmaşık arayüzler için gerekli olan uygulama durumunu, yönlendirmeyi ve veri getirmeyi yönetmek için bir yapı sağlar. Bir SPA oluştururken, başarıyı sağlamak için aşağıdaki gereksinimleri göz önünde bulundurmalısınız:
- İndekslenebilirliği artırmak için sunucu tarafı render veya statik site oluşturmanın uygulanması.
- Devasa bir ilk JavaScript paketini önlemek için kod bölmenin kullanılması.
- İstekleri en aza indirmek ve yükleme durumlarını yönetmek için veri getirme modellerinin optimize edilmesi.
- Dinamik içerik güncellemeleri ekran okuyucularını şaşırtabileceğinden erişilebilirlik uyumluluğunun sağlanması.
Ne zaman multi page application daha iyi bir seçimdir?
MPA’lar, içerik keşfine ve geniş erişime öncelik veren web siteleri için en iyi seçimdir. Projeniz bir açılış sayfası (landing page), içerik odaklı bir web sitesi veya binlerce ürünü olan bir mağazaysa, bir MPA’nın mimari basitliği bir avantajdır. İçerik statik HTML olarak sunulduğundan, performansı optimize etmek doğası gereği daha kolaydır. Daha yavaş mobil ağlardaki kullanıcılar, birincil içeriği görmeden önce tüm uygulama mantığını indirmeleri gerekmediğinden daha küçük ilk yükten yararlanırlar.
Modern geliştirmede yaygın bir model, bu yaklaşımları hibritleştirmektir. Örneğin, büyük bir e-ticaret sitesi, SEO’yu en üst düzeye çıkarmak için ürün listeleme ve kategori sayfaları için bir MPA kullanabilir. Aynı zamanda, belirli bir ödeme akışı veya kişisel kullanıcı paneli için bir SPA yaklaşımı kullanabilir. Bu strateji, her iki dünyanın avantajlarını yakalamanıza olanak tanır: keşif için arama motoru erişimi ve görev odaklı iş akışları için yüksek performanslı etkileşim. Mimarınızı kullanıcı niyeti etrafında planlamak, bu ihtiyaçları dengelemenin en etkili yoludur.
Alien Road mimari planlamayı nasıl uygular
Alien Road’da, bir mimari önermeden önce bir projenin iş hedeflerini değerlendiririz. Tipik bir çalışmada, kullanıcı yolculuğunu haritalandırarak başlarız. Birincil hedef organik büyüme ve yüksek arama görünürlüğü ise, sunucu tarafında oluşturulan bir MPA’ya veya statik oluşturmayı destekleyen bir çerçeveye yöneliriz. Bir SPA’nın ek yükünün gerekli olup olmadığını belirlemek için içerik yapısını ve veri güncellemelerinin sıklığını analiz ederiz. Ekibimiz, seçilen çerçeveden bağımsız olarak Largest Contentful Paint’in 2.5 saniyenin altında kalmasını sağlayarak core web vitals metriklerini karşılamaya odaklanır.
Dahili araçlar veya yalnızca üyelere özel portallar için, verimliliği en üst düzeye çıkarmak için genellikle bir SPA yaklaşımı öneririz. Geliştirme sürecini, küçültme ve paket analizi dahil olmak üzere oluşturma sürecini yöneten net bir CI/CD hattı kurarak yönetiriz. Paket boyutunu düzenli olarak gözden geçirerek, uygulamanın çeşitli cihazlardaki kullanıcılar için performanslı kalmasını sağlarız. Ayrıca, gezinme durumunun doğru yönetildiğinden ve tarayıcı geçmişinin beklendiği gibi çalıştığından emin olmak için manuel testler yaparız; bu, kötü uygulanmış SPA’larda yaygın bir tuzaktır.
Her iki modelde performansı nasıl korursunuz?
Performans bakımı, izleme için proaktif bir yaklaşım gerektirir. Bir MPA için, sunucu tarafı yanıt sürelerine ve resim sıkıştırma ve verimli CSS teslimi gibi varlık optimizasyonuna odaklanmalısınız. Her sayfa yüklemesi performansı iyileştirmek veya düşürmek için bir fırsat olduğundan, sayfa ağırlığınızı düşük tutmak önemlidir. Sayfalarınızı düzenli olarak denetlemek ve kullanılmayan kodları kaldırma fırsatlarını belirlemek için Lighthouse gibi araçlar kullanın. Bu, sayfalarınızı kolayca şişirebilen birçok üçüncü taraf komut dosyasına sahip siteler için özellikle önemlidir.
Bir SPA için performans yönetimi istemci tarafına kayar. Uygulama kabuğunun etkileşimli hale gelmesi için geçen süreyi izlemeli ve ikincil veri isteklerinin kullanıcı arayüzünü engellemediğinden emin olmalısınız. Yaygın bir model, veriler getirilirken kullanıcıya anında geri bildirim sağlamak için iskelet ekranları (skeleton screens) kullanmaktır. Ayrıca bağımlılık listenizi denetlemelisiniz, çünkü büyük kitaplıkları içe aktarmak ilk indirme boyutunu önemli ölçüde etkileyebilir. Ana iş parçacığının (main thread) tutarlı bir şekilde izlenmesi, uygulamanızın düşük kaliteli cihazlarda bile duyarlı kalmasını sağlar.
Karşılaştırma özeti
- MPA’lar, statik içerik için SEO ve hızlı ilk sayfa yüklemelerinde mükemmeldir.
- SPA’lar, karmaşık kullanıcı görevleri ve kontrol panelleri için üstün etkileşim sağlar.
- SPA’lar, arama motoru erişilebilirliğini sağlamak için ek geliştirme çalışması gerektirir.
- Hibrit yaklaşımlar, geliştiricilerin belirli site bölümleri için MPA ve SPA modellerini karıştırmasına olanak tanır.
Bu hafta nereden başlamalı
Mevcut trafik kaynaklarınızı ve kullanıcı davranışınızı denetleyerek başlayın. Kullanıcılarınız zamanlarının çoğunu tek bir görev üzerinde harcıyorsa, bir SPA’nın akışlarını nasıl iyileştirebileceğini düşünün. Trafiğiniz büyük ölçüde organik arama ile yönlendiriliyorsa ve hızlı içerik erişimi gerektiriyorsa, mevcut MPA mimarinizin performans için optimize edildiğini doğrulayın. Tarayıcınızda JavaScript’i devre dışı bırakarak sitenizin mevcut render yöntemini kontrol edin ve ne kadar içeriğin görünür olduğunu görün. İçerik kaybolursa, render stratejinizi ayarlamanız gerekebilir. Bu bilgileri bir sonraki geliştirme döngünüze öncelik vermek için kullanın ve mimarinin iş sonuçlarınızı doğrudan etkilediği alanlara odaklanın.
Okumaya devam edin: Web Tasarımı ve Geliştirme · Web Tasarımı