Wedgefish supporta, in maniera del tutto trasparente sia all'utente finale sia allo sviluppatore, la compressione dell'output in formato GZIP, qualora supportata dal browser.
Cosa vuol dire questo? Semplicemente che il caricamento di pagine, fogli di stile e script richiederà molto meno tempo, ed un minor consumo di banda da parte del server, consentendo di servire molti più visitatori contemporaneamente.
Questa tecnica funziona restituendo al browser la versione compressa in formato GZIP di ogni contenuto di tipo testuale (pagine HTML, fogli CSS, JavaScript, files di testo ecc...). Il browser provvederà, in maniera del tutto trasparente all'utente, a scompattarla e visualizzarla come se fosse stata inviata in formato testo.
La compressione non viene applicata alle immagini, in quanto codificate con particolari formati già compressi (PNG, GIF, JPG).
Tra i browser che supportano la compressione GZIP figurano Mozilla Firefox e le versioni di Microsoft Internet Explorer a partire dalla 7 in poi (le versioni precedenti, sebbene dichiarassero di supportare la compressione GZIP, contenevano dei bug in grado di causare errori inaspettati).
Come funziona?
Mediante tecniche collaudate e consolidate nel tempo, le cui radici affondano agli albori dell'informatica, verso la metà del XX secolo, è possibile raffigurare qualunque testo in un volume di dati molto minore, mediante algoritmi che tengono conto della frequenza dei caratteri e di sequenze di caratteri nel testo e di eventuali ripetizioni.
Nell'ambito dei browser, la codifica utilizzata è la GZIP, che costituisce uno standard riconosciuto e multipiattaforma di comprovata efficacia.
La compressione dell'output è una caratteristica integrata nella cache dell'output.
Ogni volta che viene generato del contenuto dinamicamente, a partire da una view e da un controller, l'output risultante viene memorizzato all'interno della cache in due formati: compresso e non compresso (se in formato testo: altrimenti, nel caso di immagini e altri tipi di dati non comprimibili, verrà memorizzata solo la versione non compressa).
Durante le successive richieste, se il contenuto è già presente nella cache, non solo verrà saltata la generazione dinamica, ma verrà anche direttamente restituito il contenuto già compresso, senza doverlo comprimere nuovamente.
La compressione avviene quindi solo all'atto di generare il contenuto dinamico per la prima volta, e non ad ogni richiesta, risparmiando prezioso tempo di elaborazione e accelerando quindi la risposta del server, a differenza di quanto accade con la normale compressione GZIP supportata da molti web server.



