Я работаю с Vertx 3.5.3 в приложении REST, которое также предоставляет статические файлы с помощью обработчика Vertx Web StaticHandler .
Я используюсобственный Vertx HttpServer с этой конфигурацией:
HttpServerOptions httpServerOptions = new HttpServerOptions()
.setCompressionSupported(true)
.setCompressionLevel(7)
.setTcpKeepAlive(true);
HttpServer httpServer = vertx.createHttpServer(httpServerOptions);
httpServer.requestStream().toObservable().subscribe(router::accept);
httpServer.listen(
serverConfig.getPort(),
serverConfig.getHost(),
result -> {
if (result.succeeded()) {
LOGGER.info("Server verticle is now up, listening on "
+ serverConfig.getHost() + ":" + serverConfig.getPort());
} else {
LOGGER.error("Error starting verticle on " + serverConfig.getHost() + ":" + serverConfig.getPort(), result.cause());
}
});
И это статическая конфигурация обработчика в маршрутизаторе Vertx:
// handler for static files
router.route("/*")
.handler(StaticHandler
.create()
.setAllowRootFileSystemAccess(false)
.setAlwaysAsyncFS(true)
.setCacheEntryTimeout(604800)
.setCachingEnabled(true)
.setDefaultContentEncoding("UTF-8")
.setDirectoryListing(false)
.setEnableFSTuning(true)
.setIncludeHidden(false)
.setIndexPage("index.html")
.setMaxAgeSeconds(604800)
.setSendVaryHeader(true));
Это базовая конфигурация.
Я сомневаюсь, почему при активации сжатия (gzip) сервера в браузере не отображается заголовок content-length
, а отправляется заголовок Transfer-Encoding: chunked
.Когда я деактивирую сжатие (gzip) сервера, сервер отправляет заголовок content-length
с размером файла.
Изображение первого случая (файл javascript):
И изображение второго случая (тот же файл javascript):
Есть способотправить с сервера заголовок content-length
, когда сжатие (gzip) активно?
Я нашел этот PR в репозитории Netty, поэтому я предполагаю, что Netty разрешает такое поведение, и это Vertxне отправляет заголовок.
Спасибо.