You are not logged in.

Dear visitor, welcome to Coder Forum. If this is your first visit here, please read the Help. It explains in detail how this page works. To use all features of this page, you should consider registering. Please use the registration form, to register here or read more information about the registration process. If you are already registered, please login here.

1

Sunday, November 26th 2006, 11:25am

JavaScript komprimieren

Hi Leute,
hat einer von euch eine Idee mit welchem Code man seine JavaScripts verkleinern kann.
Sicherlich kenn ich die Möglichkeit den Code über PHP mit gzip zu komprimieren.

Dieses Verfahren wird hier beschrieben:
http://wyome.com/docs/Compressing_Javascript_with_PHP

Auch suche ich kein Verfahren, dass mir den Code verschlüsselt und dann mit tausend verschachtelten evals den Code interpretiert.

Auch kommerzielle JavaScript Obfuscator helfen mir nicht wirklich. Die Programme wollen den Code alle nur unleserlich machen. Konvertieren normale Zeichen in ASCII Zeichen und so ein Müll...

Ich bin aber auf der Sache nach einem Tool, welches den Code wie bei den Google APIs komprimiert:
http://maps.google.com/mapfiles/maps2.67.api.js

Ich will meinen Code nicht schützen, ich will ihn komprimieren.
Ich denke da kann man einiges rausholen.

Bei den Google APIs werden Funktionen und Variablennamen durch möglichst wenige Buchstaben ersetzt. Kommentare werden natürlich auch gelöscht

Mit regulären Ausdrücken ist das auf jeden Fall zu realisieren (wenn auch nicht in 10Minuten) - aber bestimmt gibts schon eine Möglichkeit...

Danke

2

Sunday, November 26th 2006, 2:08pm

Hi,

also ich hatte mal n programm da mit dem der quelltext so konvertiert wurde das keine unnötigen leerzeichen mehr im code enthalten waren... aber das macht imho wohl auch erst bei einigen tausend zeilen code sinn. ich wollte damals nach einem prog suchen das mein html "code" verschlüsseln konnte. das ist allerdings auch schon ein paar jahre her und ich hab es dann auch gelassen.


vlt hilft dir das ja ;)

mfg BendIt

3

Sunday, November 26th 2006, 4:48pm

Hey,

hab extra für dich die ganze Zeit bei Google gesucht :)
Und bin schließlich auch fündig geworden! Erst habe ich nur Tools gefunden, die Leerzeichen usw. entfernen, aber nach langer Sucherei habe ich ein Programm entdeckt, das auch Variablennamen verändert.
Aus

JavaScript Code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
//detect which browser is used
var detect = navigator.userAgent.toLowerCase();
var OS,browser,version,total,thestring;
if (checkIt('konqueror'))
{
    browser = "Konqueror";
    OS = "Linux";
}
else if (checkIt('opera')) browser = "Opera"
else if (checkIt('msie')) browser = "Internet Explorer"
else if (!checkIt('compatible'))
{
    browser = "Netscape Navigator"
    version = detect.charAt(8);
}
else browser = "An unknown browser";
//version of browser
if (!version) version = detect.charAt(place + thestring.length);
//client OS
if (!OS)
{
    if (checkIt('linux')) OS = "Linux";
    else if (checkIt('x11')) OS = "Unix";
    else if (checkIt('mac')) OS = "Mac"
    else if (checkIt('win')) OS = "Windows"
    else OS = "an unknown operating system";
}
 
//check the string
function checkIt(string)
{
    place = detect.indexOf(string) + 1;
    thestring = string;
    return place;
}


wird

JavaScript Code

1
var e=navigator.userAgent.toLowerCase();var f,b,c,total,d;if(a('konqueror')){b="Konqueror";f="Linux";};else if(a('opera'))b="Opera";else if(a('msie'))b="Internet Explorer";else if(!a('compatible')){b="Netscape Navigator";c=e.charAt(8);};else b="An unknown browser";if(!c)c=e.charAt(g+d.length);if(!f){if(a('linux'))f="Linux";else if(a('x11'))f="Unix";else if(a('mac'))f="Mac";else if(a('win'))f="Windows";else f="an unknown operating system";};function a(string){g=e.indexOf(string)+1;d=string;return g;};


Im Forum kann man das jetzt nicht wirklich gut erkenne, wegen den entfernten Umbrüchen.
Das Tool ist leider für Windows gedacht, aber es gibt ja wine ^^ Ich habe es auch ausprobiert, es hat erst funktioniert, jetzt i-wie mehr, er ändert die Namen von Variablen und Funktionen nicht. Vielleicht auch, weil es nicht die Premium Version ist?

Also, hier der Link http://www.javascript-source.com/de/index.html
Ich hoffe das hilft dir weiter :) Auf Download gibts die unregistrierte Version... Vllt funzt sie ja bei dir?

Liebe Grüße,
David

4

Sunday, November 26th 2006, 6:13pm

hi,
danke schonmal für die Antworten. Habe noch ein weiteres vielversprechendes Windows Tool gefunden:
http://www.javascript-source.com/tutorial.html

Hm, nur leider muss ich inzwischen doch einsehen, dass ich entweder ein linux Tool oder ein Tool in einer anderen Websprache brauche.
Automatisierung ist Pflicht.

Werde mir mal PHPJSO anschauen. Dort wird zwar auch wieder viel mit evals gearbeitet, aber immerhin ist es OpenSource..

Aber vielleicht hat ja bereits jemand eine PHP/Perl/Ruby Klasse.

5

Thursday, December 7th 2006, 9:29am

Hallo , hast du mal folgendes Script entdeckt ?

ScripZip - Javascript komprimieren

Zwar evtl etwas komplizierter einzubauen, aber dafür mit jedem System / Seite nutzbar. Ich denke das ist genau was du suchst.
Es komprimiert Scripts (Js & CSS) sozusagen on the fly bei einem Request der Datei. Genau wie von dir gewünscht werden vorher unnötige Leerzeichen, Zeilenumbrüche, Kommentare usw. entfernt.
So spart das Script ca. 75-85% der Dateigröße ein.

Das einzige was das Script nicht macht ist die Variablen- und Funtionsnamen zu verkürzen. Wenn nämlich das ganze GZip komprimiert übertragen wird ist das 1. eh nur ein tropfen auf den heisen Stein (Änderung < 1%) und 2. könnte man Probleme mit seinen HTML Dateien bekommen wenn die Funktionen plötzlich alle anders heißen.

Zusätzlich (bedenken nur wenige und wurde hier noch gar nicht erwähnt) benutzt das ganze den sog. Browser-Cache bzw. Conditional-Get. Das heist das Script liefert die Datei nicht bei jedem Aufruf auch aus.

Sollte an den Request Headern, die der Browser schickt, zu erkennen sein das er die Datei bereits in seinem Cache hält, wird der Browser nur mit einen enstprd. Header informiert das sich diese nicht verändert hat. Der Inhalt der Datei wird dabei nicht neu versendet ( Ersparnis 100% !!! )
Kannst es ja mal testen und deine Meinung schreiben ... würde mich freuen.

Gruß Gagget

6

Thursday, December 7th 2006, 9:43am

hi,
ja, das mit dem Conditional-Get und dem e-Tag ist ein guter Punkt.
Ansonsten wieder nicht perfekt *gg*
Werde da bestimmt irgendwann mal was eigenes coden. Aktuell muss halt die Windows Software herhalten.

7

Thursday, December 7th 2006, 10:53am

Der Author des FCK-Editors (www.fckeditor.net) hat auch ein Tool zum komprimieren.
Zu finden als FCKEditor.Packager auf der Download Page

// Das Ding ist eine .NET-Anwendung

8

Thursday, April 24th 2008, 12:16am

Hier ein Tool das für dich nützlich sein könnte!

Mootools benutzt die gleiche Komprimierung, da es momentan die stärkste ist.

http://code.google.com/p/hasycompress/

Social bookmarks