bağlam
Serbest çalışan bir geliştirici olarak çalışırken, genellikle tamamen XSLT tabanlı web siteleri yaptım. Diğer bir deyişle, her istek üzerine, sayfa içeriği hakkında bilmemiz gereken her şeyi içeren bir XML dosyası oluşturulur: şu anda oturum açmış olan kullanıcının adı, üst menü girişleri, eğer bu menü dinamik / yapılandırılabilir ise, Ardından XSL'yi tarayıcıya göndermek için HTML / XHTML sayfasına (önbellekler vb.) işleyin.
Özellikle PHP ile küçük ölçekli web siteleri oluşturmayı kolaylaştırmak için iyi bir noktaya sahiptir. Bu bir tür şablon motorudur, ancak diğer şablon motorlarına tercih ederim, çünkü şablon motorlarının çoğundan çok daha güçlüdür ve daha iyi biliyorum ve beğendim. Ayrıca, gerektiğinde, ayrı API'ler oluşturmaya gerek kalmadan otomatik erişim için isteğe bağlı ham XML verilerine erişim vermek de mümkündür.
Tabii ki, herhangi bir orta ölçekli veya büyük ölçekli web sitesinde tamamen başarısız olacaktır, çünkü iyi önbellekleme teknikleriyle bile, XSL hala genel web sitesi performansını düşürür ve daha fazla CPU sunucu tarafı gerektirir.
Soru
Modern tarayıcılar, bir XML dosyası alma ve XML gibi bildirilen ilişkili bir XSL dosyasıyla dönüştürme yeteneğine sahiptir <?xml-stylesheet href="demo.xslt" type="text/xsl"?>. Firefox 3 bunu yapabilir. Internet Explorer 8 de bunu yapabilir.
Bu, XSL işlemeyi kullanıcıların% 50'si için sunucudan istemci tarafına geçirmenin mümkün olduğu anlamına gelir (bunu uygulamak isteyebileceğim birkaç web sitesindeki tarayıcı istatistiklerine göre). Bu, kullanıcıların% 50'sinin her istekte yalnızca XML dosyasını alacağı ve böylece sunucularının ve bant genişliklerinin azaltılacağı (XML dosyası, işlenen HTML analogundan çok daha kısa olacak) ve sunucunun CPU kullanımını azaltacağı anlamına gelir.
Bu tekniğin dezavantajları nelerdir?
Birkaçını düşündüm, ancak bu durumda geçerli değil:
- Zor uygulama ve tarayıcı isteğine bağlı olarak ham XML ne zaman gönderileceğini ve ne zaman HTML'ye dönüştürüleceğini seçme ihtiyacı. Açıkçası, sistem gerçek sistemden çok daha zor olmayacaktır. Yapılması gereken tek değişiklik, her XML'e XSL dosya bağlantısı eklemek ve bir tarayıcı denetimi eklemektir.
- XSLT dosyası, sunucu tarafından önbelleğe alınmak yerine tarayıcılar tarafından indirileceğinden, daha fazla IO ve bant genişliği kullanımı. XSLT dosyası tarayıcılar tarafından önbelleğe alınacağından (görüntüler veya CSS gibi veya JavaScript dosyaları gerçekten önbelleğe alındığından) bunun bir sorun olacağını düşünmüyorum.
- Muhtemelen istemci tarafında bazı sorunlar, örneğin bazı tarayıcılarda bir sayfayı kaydederken karşılaşılan sorunlar gibi.
- Kodda hata ayıklama zorluğu: Görüntülenen tek kaynak indirilen XML olduğundan tarayıcının gerçekte kullandığı bir HTML kaynağı elde etmek mümkün değildir. Öte yandan, nadiren istemci tarafında HTML koduna bakıyorum ve çoğu durumda, doğrudan kullanılamaz (boşluk kaldırılıyor).
ngx_http_xslt_moduleveya dördü ile ilgili olup olmadığını tam olarak hatırlamıyorum ). XSLT 2.0'ın istemci tarafı desteğinin daha iyi olduğundan şüpheliyim.