2009-08-29 13 views
20

Ich habe gerade Dean Edwards Javascript Packer hier: http://dean.edwards.name/packer/Ist es schlecht, Base62 eine JavaScript-Datei zu kodieren?

es ein paar Optionen,

  1. Base62 kodieren
  2. Variablen Shrink

es ich spätestens nahm zu testen Version von jquery, die bereits auf 56kb verkleinert ist und auf dieser Seite oben mit shrink-Variablen lief, ist das Ergebnis die gleiche Dateigröße, 56kb.

Ich lief dann die ursprüngliche Datei erneut mit Base62 Codierung und Shrink Variablen ausgewählt und das Ergebnis war eine 42kb-Datei.

Jetzt weiß ich nicht viel über das Reduzieren und Verpacken anderer dann macht es die Dateigröße kleiner. Aber ich bin neugierig, was Base62 tut, ist es schlecht es zu benutzen? Ich sehe, dass es die Datei viel kleiner macht, aber schafft es später mehr Arbeit/Laden, um es auf der Seite zu dekodieren?

Antwort

34

Die Basis 62 ist nichts anderes als ein positional notation. Das heißt, es kann verwendet werden, um sehr langen normalen Text durch eine sehr kurze Version darzustellen.

Die Verwendung von Base62 fügt einen zusätzlichen Schritt hinzu, bevor die js von Clients verwendet werden kann. Für jQuery Art von Bibliothek kann dieser Schritt zusätzliche 100ms bis 500ms Zeit auf Clients abhängig von vielen Faktoren dauern.

Jetzt können wir die Reduzierung der Zeit vergleichen, um das Skript herunterzuladen, um die Zeit für die Ausführung des Skripts zu verkürzen. Es kann die Download-Zeit um 50 ms reduzieren, benötigt aber zusätzliche 100 ms, um es zu verarbeiten. Schwindende Erträge !!

+0

gute Punkte, danke, vielleicht sollte ich davon weg bleiben – JasonDavis

+0

Ich möchte auch hinzufügen, dass dies ein guter Ersatz ist, wenn der Server Antworten gzip nicht. Richten Sie auch nur aufgrund der zusätzlichen Arbeit auf einmalige Anwendungsdateien und nicht auf die Bibliotheken. –

16

Es schafft mehr Arbeit auf dem Client. Der Client muss den Code ausführen, um das codierte Skript zu dekodieren. Dies ist ziemlich offensichtlich, wenn Sie nur ein wenig Code in den Codierungsblock eingeben.

Zum Beispiel:

var a = 10; 

Codiert als:

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,{})) 
Verwandte Themen