Contesto
Lavorando come sviluppatore freelance, creavo spesso siti web completamente basati su XSLT. In altre parole, su ogni richiesta, viene generato un file XML, contenente tutto ciò che dobbiamo sapere sul contenuto della pagina: il nome dell'utente attualmente loggato, le voci del menu principale, se questo menu è dinamico / configurabile, il testo da visualizzare in un'area specifica della pagina, ecc. Quindi il processo XSL (cache, ecc.) alla pagina HTML / XHTML da inviare al browser.
Ha un buon punto per rendere più facile la creazione di siti Web su piccola scala, specialmente con PHP. È una sorta di motore di template, ma preferisco altri motori di template perché è molto più potente della maggior parte dei template engine e perché lo conosco meglio e mi piace. È anche possibile, quando necessario, fornire un accesso ai dati XML non elaborati su richiesta per un accesso automatico, senza la necessità di creare API separate.
Ovviamente, fallirà completamente su qualsiasi sito web su scala media o su larga scala, poiché, anche con buone tecniche di memorizzazione nella cache, l'XSL degrada ancora le prestazioni complessive del sito web e richiede più CPU serveride.
Domanda
I moderni browser hanno la possibilità di prendere un file XML e di trasformarlo con un file XSL associato dichiarato in XML come <?xml-stylesheet href="demo.xslt" type="text/xsl"?>
. Firefox 3 può farlo. Internet Explorer 8 può farlo anche.
Significa che è possibile migrare l'elaborazione XSL dal server al client per il 50% degli utenti (in base alle statistiche del browser su diversi siti Web in cui potrei voler implementarlo). Ciò significa che il 50% degli utenti riceverà solo il file XML ad ogni richiesta, riducendo così la larghezza di banda di loro e del server (il file XML è molto più breve dell'analogo HTML elaborato) e riducendo l'utilizzo della CPU del server.
Quali sono gli svantaggi di questa tecnica?
Ho pensato a diversi, ma non si applica a questa situazione:
- Difficile implementazione e necessità di scegliere, in base alla richiesta del browser, quando inviare XML non elaborato e quando invece trasformarlo in HTML. Ovviamente, il sistema non sarà molto più difficile di quello attuale. L'unica modifica da fare è aggiungere il collegamento file XSL a ogni XML e aggiungere un controllo del browser.
- Più utilizzo di I / O e larghezza di banda, poiché il file XSLT verrà scaricato dai browser, invece di essere memorizzato nella cache dal server. Non penso che sarà un problema, dal momento che il file XSLT verrà memorizzato nella cache dai browser (come immagini, o CSS, o i file JavaScript sono effettivamente memorizzati nella cache).
- Forse alcuni problemi sul lato client, come forse problemi nel salvataggio di una pagina in alcuni browser.
- Difficoltà di eseguire il debug del codice: non è possibile ottenere una sorgente HTML utilizzata dal browser, poiché l'unica sorgente visualizzata è l'XML scaricato. D'altra parte, raramente guardo il codice HTML dal lato client e, nella maggior parte dei casi, è inutilizzabile direttamente (lo spazio viene rimosso).