Neues in der Kategorie CGI

CSS::Compressor - Perl extension for CSS minification, ein Perl-Port des bekannten Yahoo YUICompressor, bietet eine effiziente Kompression von CSS-Dateien und startet sehr viel schneller als sein Vorbild.

Das Modul CSS::Compressor wurde eigentlich für den internen Gebrauch von Booking.com entwickelt und nun als Open Source Software veröffentlicht.

 

Beispiel

Das folgende Beispielprogramm nimmt Dateinamen auf der Kommandozeile entgegen, liest den Inhalt der CSS-Datei mit File::Slurp in eine skalare Variable ein, komprimiert das CSS mit css_compress() und schreibt das Ergebnis in eine neue Datei.

#!/usr/bin/perl 
use warnings;
use strict;

use CSS::Compressor qw( css_compress );
use File::Slurp;

my @css_files = @ARGV;

foreach my $css_file (@css_files) {
    my $big      = read_file($css_file);
    my $small    = css_compress $big;
    my $out_file = $css_file;
    $out_file    =~ s#css$#min-css#is;
    write_file( $out_file, $small );
}

Aufruf/Verwendung:

$ chmod 755 css.pl
$ ./css.pl ./css_tests/*.css

 

Geschwindigkeitsvergleich

Die angepriesene deutliche Geschwindigkeitsverbesserung kann unter Linux einfach mit Bordmitteln nachgeprüft werden:

$ time ./css.pl ./css_tests/*.css
$ time yui-compressor -o '/cgi/.css---min.css' ./css_tests/*.css

Auf meinen Testservern (Ubuntu 12.04) läuft CSS::Compressor 30 bis 40% schneller als YUICompressor.

 

Siehe auch:

 

Gemäß Yahoo! Developer Network gibt es dreizehn einfache Regeln um die Ladezeit einer Website zur verringern: Thirteen Simple Rules for Speeding Up Your Web Site.

Regel Nr. Zehn: Minify JavaScript empfiehlt alle unnötigen Zeichen aus JavaScript zu entfernen, also beispielsweise überflüssigen Whitespace und Kommentare.

Mit JavaScript::Minifier von Peter Michaux geht das ganz einfach:

#!/usr/bin/perl
use strict;
use warnings;

use JavaScript::Minifier qw(minify);
open(INFILE, 'myScript.js') or die $!;
open(OUTFILE, '>', 'myScript-min.js') or die $!;

minify(input => *INFILE, outfile => *OUTFILE);

close(INFILE) or die $!;
close(OUTFILE) or die $!;

Siehe auch

Umgebungsvariablen ermitteln

Perl stellt Umgebungsvariablen im %ENV zur Verfügung.

Nachfolgend ein kleines Programm mit dessen Hilfe die Umgebungsvariablen auf einem Webserver ermittelt werden können.

#!/usr/bin/perl
use strict;
print "Content-type: text/html\n\n";


print qq~<html>
<head><title>printenv</title></head>
<body>
<pre>~;

print qq~PerlVersion: $]

Umgebungsvariablen:\n~;

my ($key,$value);

while ( ($key,$value)  = each %ENV ) {
        print qq~$key : $value\n~;
}

print qq~</pre></body></html>~;
exit;

Das Programm im cgi-bin Verzeichnis des Webservers z.B. als printenv.pl abspeichern und anschließend im Browser aufrufen: http://beispiel.tld/cgi-bin/printenv.pl.

Übersicht CGI-Umgebungsvariablen

 

Standardvariablen

SERVER_SOFTWARE Der Name und die Versionsnummer der verwendeten Serversoftware.
SERVER_NAME Der Hostname der Website.
GATEWAY_INTERFACE Die Versionsnummer des CGI, welches der Webserver verwendet.
SERVER_PROTOCOL Der Name und die Versionsnummer des verwendeten Protokolls.
REQUEST_METHOD Die HTTP-Methode der Client-Anfrage.
PATH_INFO Pfadinformation (URL)
PATH_TRANSLATED Pfadinformation (Dateipfad)
SCRIPT_NAME URL-Pfad des Skripts, das aufgerufen wurde.
QUERY_STRINGDie Parameter, die an ein CGI-Skript gesendet wurden.
REMOTE_HOSTDer Hostname des Client- bzw. Proxy-Rechners. Der Rechner muss einen DNS-Eintrag besitzen und HostNameLookup aktiviert sein.
REMOTE_ADDR Die IP-Adresse des Client- bzw. Proxy-Rechners.
AUTH_TYPE Die Art des verwendeten Authentifizierungsverfahrens.
REMOTE_USER Die User-ID, die bei der Authentifizierung verwendet wurde.
REMOTE_IDENTDas Ergebnis der IDENT-Anfrage an den Client. Wird nur gesetzt, wenn IdentyCheck aktiviert ist.
CONTENT_TYPE Diese Variable enthält den MIME-Typ, wenn eine Anfrage (POST, PUT) weitere Daten enthält.
CONTENT_LENGTH Die Länge der Daten in Bytes, wenn eine Anfrage weitere Daten enthält.

Headervariablen

HTTP_ACCEPT Eine Liste der MIME-Typen, die der Client verarbeiten kann.
HTTP_ACCEPT_CHARSET Eine Liste der Zeichensätze, die der Client verarbeiten kann.
HTTP_ACCEPT_ENCODING Eine Liste der Kodierungen, die der Client verarbeiten kann.
HTTP_ACCEPT_LANGUAGE Die Sprachen, die der Client verarbeiten (verstehen) kann.
HTTP_AUTHORIZATION Die Daten einer WWW-Authentifzierung
HTTP_CACHE_CONTROL Enthält Informationen, ob und wie ein Objekt gespeichert werden kann und ob ein Cache ein gespeichertes Objekt liefern darf.
HTTP_COOKIE Cookie, sofern akzeptiert.
HTTP_FROM Die E-Mail-Adresse des Clients. Sie wird aber nur in sehr wenigen Fällen übermittelt.
HTTP_HOST Der Name des Webservers, den der Client angesprochen hat.
HTTP_PRAGMA HTTP/1.0-Variante von HTTP_CACHE_CONTROL
HTTP_REFERER Die URL der Seite, von der aus der Link verfolgt wurde.
HTTP_USER_AGENT Der Name und die Versionsnummers des Clients.
HTTP_VIA Informationen über den Proxy, über den die Anfrage gestellt wurde.
HTTP_FORWARDED HTTP/1.0-Variante von HTTP_VIA.

Zusätzliche Variablen

Diese zusätzlichen Variablen sind server-abhängig: Die folgende Tabelle bezieht sich auf den Apache Webserver.

DATE_LOCAL Lokales Datum und Uhrzeit. Lokal bezieht sich meist auf den geographischen Serverstandort ;).
DATE_GMT Datum und Uhrzeit in GMT (Greenwich Mean Time).
DOCUMENT_NAME Der Dateiname des angeforderten Dokuments ohne zusätzliche Pfadangabe.
DOCUMENT_PATH_INFO Die Pfadangabe zum angeforderten Dokument.
DOCUMENT_ROOT Der Pfad, der als DocumentRoot gesetzt wurde.
DOCUMENT_URI URI des angeforderten Dokuments.
LAST_MODIFIED Datum und Uhrzeit der letzten Änderung des angeforderten Dokuments.
PATH Entspricht der Shell-Variablen PATH.
REMOTE_PORT Der auf der Client-Seite verwendete Port.
REQUEST_URI URL der angeforderten Datei.
SCRIPT_NAME Relativer Dateipfad des aufgerufenen Scripts.
SCRIPT_FILENAME Absoluter Dateipfad des aufgerufenen Scripts.
SCRIPT_URI Absolute URL incl. Hostname des aufgerufenen Scripts.
SERVER_ADMIN Die E-Mail-Adresse des ServerAdmin, sofern gesetzt.
USER_NAME Der Name des Users, der den Apache gestartet hat. Wird vom Apache-Include-Modul gesetzt.

Siehe auch

Über dieses Archiv

Diese Seite enthält aktuelle Einträge der Kategorie CGI.

Catalyst ist die vorherige Kategorie.

Cloud ist die nächste Kategorie.

Aktuelle Einträge finden Sie auf der Startseite, alle Einträge in den Archiven.

Blog Roll

Powered by

Powered by Movable Type 5.2.10

Creative Commons-Lizenz

Creative Commons License
Dieses Weblog steht unter einer Creative Commons-Lizenz.