2010-05-26 10 views
9

Gibt es eine Möglichkeit, statischen Inhalt automatisch zu minimieren und dann automatisch aus einem Cache zu bedienen? Ähnlich wie mod_compress/mod_deflate funktioniert? Vorzugsweise etwas, das ich in Kombination mit der Komprimierung verwenden könnte (da die Komprimierung einen spürbaren Vorteil hat).Serverseitige automatische Minimierung?

Meine Präferenz ist etwas, das mit lighttpd funktioniert, aber ich konnte nichts finden, also wäre jeder Webserver, der das kann, interessant.

Antwort

4

Sie können nginx Dritter Leistenmodul versuchen:

http://wiki.nginx.org/NginxHttpStripModule

Jedes Modul, das Sie verwenden ist nur Leerzeichen gehen zu entfernen. Sie erhalten ein besseres Ergebnis, wenn Sie einen Minifier verwenden, der alles versteht, was Sie verkleinern. z.B. Google Closure Javascript Compiler.

Es ist schlau genug zu wissen, was eine Variable ist und ihren Namen kürzer zu machen. Ein Whitespace Remover kann das nicht.

Ich würde empfehlen, offline zu minimieren, es sei denn, Ihre Website ist sehr wenig Verkehr. Aber wenn Sie in Ihrer Live-Umgebung minimieren möchten, empfehle ich die Verwendung von Nginx Proxy-Cache. (Sorry, aber ich habe nicht genug Ruf, um mehr als einen Link zu posten)

Oder Sie können in Memcached für einen In-Memory-Cache oder Redis für die gleiche Sache suchen, aber mit Disk-Backup.

+3

"Tut mir leid, aber ich habe nicht genug Reputation, um mehr als einen Link zu veröffentlichen" .. wie wäre es mit dem Schreiben im Klartext? –

2

Ich verwende Microsoft Ajax Minifier, die mit einer C# -Bibliothek kommt, um js-Dateien zu minimieren. Ich benutze das auf dem Server und biete maximal zwei verkleinerte .js-Dateien pro Seite an (eine "statische", die auf der gesamten Site gleich ist und eine "dynamische", die nur für diese Seite spezifisch ist).

Yahoos YUI-Komprimierung ist auch eine einfache Java .jar-Datei, die Sie auch verwenden können.

Die wichtige Sache, denke ich, ist es nicht auf einer Datei-für-Datei-Basis zu tun. Sie müssen wirklich kombinieren die .js-Dateien, um den größten Nutzen zu erhalten. Aus diesem Grund wird eine "automatische" Lösung nicht wirklich funktionieren - weil sie notwendigerweise nur auf einer Datei-für-Datei-Basis funktioniert.

+0

Die Hauptsache ist, dass ich lieber nicht manuell ein Skript ausführen müssen (ja ich weiß, faul). Ich habe nur eine js und eine CSS-Datei pro Seite. –

3

Ich entschied mich, dies über PHP zu tun (hauptsächlich, weil ich nicht Lust hatte, ein Lighttpd-Modul zu schreiben).

Mein Skript übernimmt eine Abfragezeichenfolge, die den Typ der angeforderten Dateien (js oder css) und dann die Namen dieser Dateien angibt. Zum Beispiel auf meiner Seite ist die CSS wie folgt hinzugefügt:

<link rel="stylesheet" href="concat.php?type=css&style&blue" ... />

Diese minifies und verkettet style.css und blue.css

Es JSMin-PHP und cssmin verwendet.

Es speichert auch die Dateien mit XCache, wenn es verfügbar ist (da Minifying ist teuer). Ich plane eigentlich, das Skript zu ändern, damit es nicht verkleinert, wenn Xcache nicht verfügbar ist, aber ich habe Xcache und mir wurde langweilig.

Wie auch immer, wenn jemand anderes es will, ist es here. Wenn Sie meins verwenden, müssen Sie die isAllowed() Funktion ändern, um Ihre Dateien aufzulisten (es kann sicher sein, dass es nur wahr zurückgibt, aber es war einfach, nur diejenigen aufzulisten, die ich zulassen möchte).