Faruq hat geschrieben:ich suche ein php-script, mit dem ich javaScript-dateien komprimieren kann.
Ich weiß nicht, warum du ausgerechnet ein PHP-Skript haben willst, aber: Falls es sich um statischen Code handelt, solltest du ihn grundsätzlich besser statisch belassen und nicht durch eine zusätzliche Verarbeitung bei jedem Aufruf aufblähen. Das, was du an Übertragungszeit durch die Javascript-Verkürzung einsparst, schlägst du dann möglicherweise durch die für die Verkürzung notwendige Arbeit wieder drauf.
JSMin ist ein bewährtes Werkzeug, um Javascript-Code offline einzudampfen. Außerdem gibt es
codetrim,
packer und
Crunchinator.
jsbuilder verheddert sich fürchterlich bei Kommentaren und Klammern in Zeichenketten, nicht empfehlenswert.
Noch deutlichst effektiver ist es davon abgesehen, Javascript-Dateien ganz einfach per gzip zu komprimieren. Du legst dann das Original als skript.js.js (doppelte Endung!) und die komprimierte Fassung als skript.js.gz auf dem Server ab, verweist aber weiterhin auf skript.js (einfache Endung!). Setzt du dann noch in eine betreffende .htaccess die Zeile
Options +multiviews sucht sich der Apache von ganz alleine die passende Datei.
Ich hab's kurz verglichen:
5.408 Original-Skript
1.584 Mit gzip komprimiert
4.209 jsmin
4.108 Codetrim
4.107 Packer
4.270 Crunchinator
1.300 Mit jsmin und gzip komprimiert
Den gleichen gzip-Effekt erreichst du, wenn du die Zeile
AddOutputFilterByType DEFLATE text/css text/javascript in die oberste .htaccess einsetzt (funktioniert nur bei halbwegs aktuellen Apache-Versionen und sofern das Modul
mod_deflate eingebaut ist, es gehört aber zum Standardumfang). Der Server komprimiert dann, so möglich, automatisch alle Daten vom Typ text/css und text/javascript beim Aufruf, du musst nichts weite machen.
Das widerspricht sich etwas mit meiner Erklärung, die ich eingangs gemacht habe, allerdings handelt es sich hier nicht um ein PHP-Skript, sondern um Maschinencode, der ist per se schon deutlich fixer, die gzip-Kompression spart zudem deutlich mehr Bytes ein als jede Javascript-Verkürzung, und die Offline-Komprimierung würde ich nichtsdestotrotz bevorzugen.
Du kannst auch noch andere Typen an die Zeile anhängen, namentlich natürlich text/html und text/plain - das ist aber nicht unbedingt notwendig, weil die eigentlich schon per Vorgabe komprimiert werden. Ein
Blick auf die Serverantwort gibt Auskunft, komprimierte Daten werden mit Content-Encoding: gzip angekündigt.