Verwendung der gzip-Komprimierung in Sinatra mit Ruby

8

Hinweis: Ich hatte eine andere ähnliche Frage, wie man mit Rubys zlib GZIP-Daten verarbeitet, was technisch beantwortet wurde und ich hatte nicht das Gefühl, dass ich mit der Entwicklung der Frage beginnen könnte, da sie so beantwortet wurde diese Frage ist verwandt, es ist nicht das gleiche ...

Der folgende Code (glaube ich) besteht darin, eine statische CSS-Datei mit GZIP zu versehen und die Ergebnisse in der Variablen result zu speichern. Aber was mache ich damit in dem Sinne: Wie kann ich diese Daten an den Browser zurücksenden, damit sie als GZIP erkannt werden und nicht als die ursprüngliche Dateigröße (zB wenn ich meine YSlow-Punktzahl überprüfe, möchte ich, dass sie korrekt markiert wird Ich für die Sicherstellung, dass ich statische Ressourcen GZIP).

%Vor%

... eine Sache, die man beachten sollte, ist, dass der Befragte in meiner vorherigen Frage klargestellt hat, dass Zlib::Deflate.deflate keine gzip-kodierten Daten produzieren wird. Es erzeugt nur zlib-kodierte Daten und daher müsste ich Zlib::Deflate.new mit dem Argument windowBits gleich 31 verwenden, um einen gzip-Stream zu starten.

Aber wenn ich diesen Code ausführe, weiß ich eigentlich nicht, was ich mit der result Variable und ihrem Inhalt machen soll. Es gibt keine Informationen im Internet (die ich finden kann) darüber, wie man GZIP-kodierte statische Ressourcen (wie JavaScript, CSS, HTML usw.) an den Browser sendet, wodurch die Seite schneller geladen wird. Es scheint, dass jeder Ruby-Artikel, den ich lese, auf jemandem basiert, der Ruby on Rails benutzt !!?

Jede Hilfe wirklich geschätzt.

    
Integralist 17.06.2012, 15:55
quelle

2 Antworten

13

Nach dem Zippen der Datei würden Sie einfach das Ergebnis zurückgeben und sicherstellen, dass der Header Content-Encoding: gzip für die Antwort gesetzt wird. Google hat eine nette, kleine Einführung zur gzip-Komprimierung und was Sie beachten müssen. Hier ist, was Sie in Sinatra tun können:

%Vor%

Ein letztes Wort der Vorsicht. Sie sollten diesen Ansatz wahrscheinlich nur für Inhalte verwenden, die Sie spontan erstellt haben, oder wenn Sie die gzip-Komprimierung nur an einigen Stellen verwenden möchten.

Wenn Sie jedoch das Ziel verfolgen, die meisten oder sogar alle Ihrer statischen Ressourcen mit der gzip-Komprimierung zu versehen, dann ist es eine viel bessere Lösung, sich auf das zu stützen, was bereits von Ihrem Webserver unterstützt wird, anstatt Ihren Code zu verschmutzen dieses Detail. Es besteht eine gute Chance, dass Sie die gzip-Komprimierung mit einigen Konfigurationseinstellungen aktivieren können. Hier ist ein Beispiel, wie es für nginx gemacht wird.

Eine andere Alternative wäre, die Middleware Rack :: Deflater zu verwenden.

    
emboss 17.06.2012, 18:40
quelle
3

Nur um 'Rack :: Deflater' Weg als 'Antwort' zu markieren - & gt;

Wie im obigen Kommentar erwähnt, setzen Sie einfach die Komprimierung in config.ru

%Vor%

das ist es ziemlich!

    
Rishi 05.07.2016 22:47
quelle

Tags und Links