Как установить соответствующие заголовки http для gzip - PullRequest
0 голосов
/ 24 июня 2019

Я использую Unity WebGL и получаю это сообщение на консоли "Вы можете сократить время запуска, если вы настроите свой веб-сервер для размещения файлов .unityweb с использованием сжатия gzip." к документации Unity мне нужно добавить правильный ответ. Заголовки https://docs.unity3d.com/Manual/webgl-deploying.html.

Я нашел модуль "express-static-gzip" и попытался это сделать, но предупреждение все еще там.Ниже представлен сервер.

enter image description here

const express = require('express');
const ip = require("ip");
const expressStaticGzip = require('express-static-gzip');
const http = require('http');


const app = express();
const server = http.Server(app);

app.use('/public/Builds/Build/', expressStaticGzip('public/Builds/Build/', {
    customCompressions: [{
        encodingName: "gzip",
        fileExtension: "unityweb"
    }]
}));


// app.use(compression());
app.use(express.static('public'));

server.listen(3000, function(){
    console.log( ":: http://" + ip.address() + "/ ::" );
});

Есть идеи?Ник

Ответы [ 2 ]

0 голосов
/ 25 июня 2019

Большое спасибо @d_shiv за помощь.Я изменил код на следующий, и предупреждение исчезло.

(вы можете изменить gzip с помощью br, если вы используете brotli)

const express = require('express');
const ip = require("ip");
const http = require('http');


const app = express();
const server = http.Server(app);

app.use(express.static('public', {
    setHeaders: function(res, path) {
        if(path.endsWith(".unityweb")){
            res.set("Content-Encoding", "gzip");
        }
    }
}));

server.listen(3000, function(){
    console.log( ":: http://" + ip.address() + ":3000/ ::" );
});
0 голосов
/ 24 июня 2019

express-static-gzip не распаковывает файлы на лету перед тем, как их обслужить. Предполагается, что в указанном каталоге у вас есть как обычные, так и сжатые версии файла. Ознакомьтесь с разделом Примеры документации здесь .

В этом случае, если public/Builds/Build/Builds.wasm.framework.unityweb нужно было передать с помощью сжатия gzip, вам необходимо создать версию gzip с именем public/Builds/Build/Builds.wasm.framework.unityweb.gz. Промежуточное программное обеспечение автоматически просканирует папку на наличие всех таких пар файлов, где доступны как оригинальные, так и сжатые версии. Он будет работать с версией GZIPP, когда придет запрос на оригинальный файл, если браузер его поддерживает.

Массив customCompressions также следует пропустить, поскольку он включен по умолчанию. Промежуточное программное обеспечение будет зарегистрировано, что-то вроде этого:

app.use('/Builds/Build/', expressStaticGzip('public/Builds/Build/'));

Также обратите внимание, что public/ удален из пути промежуточного программного обеспечения (хотя должен присутствовать в пути expressStaticGzip). Это потому, что ваши активы загружаются с пути https://{hostname}/Builds/Build/....

Если вы собираетесь сжимать файлы на лету и архивировать их, взгляните на модуль сжатие . Это может быть очень дорогостоящей операцией для вашего сервера, хотя, если возможно, выполните сжатие во время сборки, чтобы создать эквивалентные файлы .gz, и продолжайте использовать express-static-gzip.

...