2009-08-29 12 views
20

Ho appena trovato Dean Edwards javascript packer qui: http://dean.edwards.name/packer/Fa male a Base62 codificare un file javascript?

Ha un paio di opzioni,

  1. Base62 codifica
  2. Riduci variabili

Per provarlo ho preso l'ultimo la versione di jquery che è già stata ridotta a 56kb e l'ha eseguita su quella pagina sopra con le variabili di restringimento, il risultato è lo stesso file di dimensioni, 56kb.

Ho quindi eseguito nuovamente il file originale con entrambe le codifiche Base62 e le variabili Shrink selezionate e il risultato era un file da 42kb.

Ora non so molto su come minimizzare e impacchettare, quindi rende il file più piccolo. Ma sono curioso di sapere cosa sta facendo la codifica Base62, è brutto usarlo? Vedo che rende il file molto più piccolo ma crea più lavoro/caricamento in seguito per decodificarlo sulla pagina?

risposta

34

Base 62 non è altro che un positional notation. Cioè, può essere usato per rappresentare un testo normale molto lungo con una versione molto più breve.

L'utilizzo di Base62 aggiunge un ulteriore passaggio prima che js possa essere utilizzato dai client. Per il tipo di libreria jQuery questo passaggio può richiedere da 100 a 500ms di tempo in più sui client, a seconda di molti fattori.

Ora possiamo confrontare la riduzione del tempo per scaricare lo script per il tempo necessario per eseguire lo script. Può ridurre il tempo di download di 50 ms, ma richiede 100ms in più per elaborarlo. Rendimenti decrescenti!!

+0

buoni punti, grazie, forse dovrei starne lontano – JasonDavis

+0

Vorrei anche aggiungere che questo è un buon sostituto se il server non gzip risposte. Inoltre, si rivolgono solo ai file di applicazione univoci e non alle librerie a causa del lavoro extra. –

16

Crea più lavoro sul client. Il client deve eseguire il codice per decodificare lo script codificato. Questo è abbastanza ovvio se si inserisce solo un po 'di codice nel blocco di codifica.

Ad esempio:

var a = 10; 

Codifica come:

eval(function(p,a,c,k,e,r){e=String;if(!''.replace(/^/,String)){while(c--)r[c]=k[c]||c;k=[function(e){return r[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('0 1=2;',3,3,'var|a|10'.split('|'),0,{})) 
Problemi correlati