问题标签 [brotli]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
418 浏览

javascript - 在nodejs中序列化和压缩哈希图(对象)的最快方法?

在 NodeJS 12+ 中序列化和压缩 javascript hashmap(对象)的最快方法是什么?我试图找到将 javascript 对象转换为二进制数据的序列化和压缩方法的最快组合。

可能组合的数量是 100+,我的目标是预先研究,为最终基准选择几个最佳选项

输入:具有任意键的对象,因此不能使用一些非常快速的序列化方法,如AVSC 。假设对象有 30 个键值对,例如:

无需支持 Date、Regex 等的序列化。

仅序列化可以考虑无模式序列化格式,如 JSON 或 BSON。V8.serialize是一个有趣的选项,可能它很快,因为它是原生的。Compress-brotli软件包出于某种原因添加了它的支持,但没有提供基准或将其突出显示为推荐选项。

压缩应该只考虑最快的方法。不确定brotli是否是一个完美的选择,因为根据 wiki,它在压缩 JS、CSS 和 HTML 方面非常强大,因为在输入中需要“关键字”。首选原生 nodejs 支持。

我为类似的用例找到了有用的研究(我计划通过 lambda 压缩并存储在 S3 中),但它们的数据源自 JSON,与我的情况相反。

0 投票
1 回答
412 浏览

amazon-s3 - gatsby 压缩在实时服务器中不起作用,仅在本地

我正在使用 brotli 插件在 gatsby 中压缩我的包:https ://github.com/ovhemert/gatsby-plugin-brotli

插件配置如下:

出于某种原因,它似乎只有当我在我的本地机器(localhost:9000)上“gatsby serve”它时才有效,但是将它上传到 S3 上的存储桶,显示没有任何压缩:

本地部署: 局部压缩

s3 部署: 产品压缩

无论我尝试了什么,都没有任何效果。为了上传到 S3,我一直在使用 gatsby-plugin-s3 包: https ://github.com/jariz/gatsby-plugin-s3

任何想法?谢谢!

编辑:我检查了存储桶以确保它包含压缩文件并且确实包含压缩文件,但也包含解压缩文件: s3桶

所以我想我需要完善我的问题,但不知道如何......不知道是什么导致了这个问题

0 投票
1 回答
93 浏览

google-chrome - 浏览器总是得到未压缩的脚本。用 Brotli 预压缩

我使用 brotli 预压缩我的脚本。这是我的脚本 在此处输入图像描述

Nginx 配置:

这是chrome的截图: 在此处输入图像描述

标题。我猜他们是对的 在此处输入图像描述

但是chrome仍然在获取未压缩的文件!当我将节流设置为“Fast 3G”时,chrome 会慢慢下载 1.6MB 的未压缩脚本。我究竟做错了什么?

0 投票
1 回答
120 浏览

amazon-web-services - 压缩 S3 存储桶中的数十亿个文件

我们在 S3 (>1B) 中有很多文件,我想压缩这些文件以降低存储成本。什么是一种简单有效的方法来做到这一点?

谢谢

亚历克斯

0 投票
1 回答
555 浏览

gzip - Haproxy 似乎在“Accept-Encoding”标头中用 gzip 替换了 brotli

我正在努力弄清楚为什么当请求通过haproxy时haproxy似乎在“Accept-Encoding”标头中用gzip替换了br

我的应用程序目前的结构如下:

所以我这样测试:

所以 - 向haproxy发送单个 GET 请求,该请求仅严格要求(使用 curl)......
所以这就是我希望看到的 varnish,但实际上进入 varnish 的是这两个请求:

  • 带br的 HEAD 请求
  • 使用gzip值代替GET 请求...

我很困惑 - 为什么现在有 2 个请求?我没有在haproxy中配置压缩,它 怎么能将br重写为gzip

请求清漆(我使用 tcpflow 程序得到这个):

我的 haproxy 配置如下所示:

代理服务器

如果有人知道这里发生了什么,请帮忙 - 非常难过。

0 投票
0 回答
220 浏览

apache - 在 Ubuntu 20.04 上使用 Apache 和 PHP 的 brotli - 可能吗?

我尝试在 Ubuntu 20.04 上使用 Apache 启用 brotli。它有效,但不适用于使用 PHP 生成的内容。

它适用于 HTML 文件:

但如果它是 PHP 则不起作用 - 在这种情况下,内容是用“gzip”压缩的:

奇怪的是,如果我将“br”指定为“Accept-Encoding”中的唯一值(浏览器使用“gzip,deflate,br”),它确实适用于 PHP:

那么,这里有什么问题呢?

我通过运行启用了 brotli:

并将以下部分添加到虚拟主机(随后是 apache 重启):

0 投票
0 回答
107 浏览

javascript - 使用 webpack 构建时未定义 zlib.brotliCompress / zlib.brotliUncompress

但是,通过 webpack (react-scripts) 打包并导入zlib时,除了 brotli 相关的功能外,所有方法都可用,只有那些没有。

那些被排除在外是有原因的吗?我可以让他们回来吗?

0 投票
0 回答
176 浏览

angular - 如何使用 Angular 11 配置 Brotli 压缩

我想使用 Angular 11 应用程序配置 Brotli 压缩。如果不支持什么是替代解决方案。

0 投票
0 回答
196 浏览

compression - devtools 网络中的解压时间 - Chrome/Firefox (Gzip / Brotli)

我想使用 brotli 来压缩一些 javascript 文件。
我设法使用最大压缩级别在服务器端压缩它们。
事实上,这个压缩文件的重量比 GZIP 的要轻。
例如,我在服务器上有我的 file.js.br,如果他支持 BR 编码,它将被发送给客户端。

好的,这很棒,文件重量更轻,客户端下载速度更快。
但是减压时间呢?
当我以最高级别压缩时,我认为解压缩需要更多时间。

问题是,总而言之,GZIP + 解压缩可能比 BROTLI + 解压缩要快,但我不知道,我的优化失败了。
是否可以在控制台中不仅可以看到下载文件的时间,还可以看到解压缩的时间?

先感谢您。

0 投票
1 回答
56 浏览

express - 安装 express-static-gzip 后 req.body 未定义

我最近在我的服务器上添加了 express-static-gzip,并且在提交表单时注意到我的 req.body 在我的 router.post 中未定义。

以前它可以正常工作,但现在我收到 POST 500 内部服务器错误,无法读取未定义的属性“名称”和未捕获(承诺中) SyntaxError: Unexpected token < in JSON at position 0 错误。

这是我的表单提交:

这是我的服务器设置,有问题的路由是'/api/v1/mail':

这是我的 POST 请求: