it-swarm.com.de

gzip und webpack kompression

Ich kann gzip nicht arbeiten lassen. Ich möchte vorher GZIP-Dateien erstellen. Das mache ich mit Compression-Webpack-Plugin. Ich verwende diese Dateien wie gewohnt auf dem Server.

app.use(Express.static(path.join(__dirname, '../', 'dist')))

app.get('*', (req: Object, res: Object) => {
  res.render('index')
})

Und diese Dateien habe ich in meinem Templaat.

<head>
    <meta charset="UTF-8" />
    <title>Q</title>
      <link rel='stylesheet' type='text/css' href="stylesLocal.29kf81a60pl57850llfi.js.gz">
</head>

  <body>
      <div id="app"><%- app %></div>
      <script src="bundle.2720b1a98103167676ac.js.gz"></script>
      <script src="vendor.57erz1a981hk5786756u.js.gz"></script>
  </body>
</html>

Alles funktioniert, wenn ich die Dateien nicht gzip mache, aber wenn ich .gz-Dateien sende, bricht sie ab. Ich lese, dass ich Content-Encoding: gzip und Content-Type setzen soll und ich habe es versucht, aber was für einen Inhaltstyp ich auch habe, beschwert er sich, da ich css, js und Textdatei sende. Sie wissen nicht, wie Sie diese Arbeit machen sollen?

5
Igor-Vuk

Es klingt, als hätten Sie bereits .gz-Dateien auf dem Server. Wenn Sie möchten, dass Express sie bedient, müssen Sie etwas wie connect-gzip-static: https://github.com/pirxpilot/connect-gzip-static

Wie es funktioniert

Wir beginnen damit, alle komprimierten Dateien (dh Dateien mit den Erweiterungen .Gz und .br) im Stammverzeichnis zu lokalisieren. Alle HTTP GET- und HTTP HEAD -Anfragen, deren Accept-Encoding-Header auf gzip gesetzt ist, werden gegen Der Liste der komprimierten Dateien geprüft und, wenn möglich, durch Zurückgeben von Der komprimierten Versionen ausgeführt. Wenn die komprimierte Version nicht gefunden wird oder die Anforderung Keinen entsprechenden Accept-Encoding-Header enthält, wird die Anforderung Auf dieselbe Weise verarbeitet, wie dies bei standardmäßiger statischer Middleware der Fall ist.

1
olore

Nach dem, was ich sammle, bündeln Sie die Dateien, führen die Komprimierung durch, um die .gz-Version verfügbar zu machen, und Sie sollten HTML die NON-gzip-Version aufrufen.

Zeigt dir das, was du willst?

https://forum-archive.vuejs.org/topic/4059/adding-gzip-to-webpack-using-compression-plugin

EDIT

entfernen Sie die .gz

  <script src="bundle.2720b1a98103167676ac.js"></script>
  <script src="vendor.57erz1a981hk5786756u.js"></script>

Grund: Der Browser teilt dem Server mit, wenn er GZip unterstützt. Wenn dies der Fall ist, sendet er die .gz-Version der Datei, ansonsten sendet er die Textversion. Der Browser entschlüsselt die Datei und lädt sie in die HTML-Datei. Sie sehen nur die entschlüsselte Version. 

Wenn der Server die .gz-Version sendet, im Browser jedoch fehlerhaft ist, wird die .gz-Datei nicht richtig erstellt.

0