问题标签 [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.
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,与我的情况相反。
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
任何想法?谢谢!
编辑:我检查了存储桶以确保它包含压缩文件并且确实包含压缩文件,但也包含解压缩文件:
所以我想我需要完善我的问题,但不知道如何......不知道是什么导致了这个问题
amazon-web-services - 压缩 S3 存储桶中的数十亿个文件
我们在 S3 (>1B) 中有很多文件,我想压缩这些文件以降低存储成本。什么是一种简单有效的方法来做到这一点?
谢谢
亚历克斯
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 配置如下所示:
代理服务器
如果有人知道这里发生了什么,请帮忙 - 非常难过。
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 重启):
javascript - 使用 webpack 构建时未定义 zlib.brotliCompress / zlib.brotliUncompress
但是,通过 webpack (react-scripts) 打包并导入zlib
时,除了 brotli 相关的功能外,所有方法都可用,只有那些没有。
那些被排除在外是有原因的吗?我可以让他们回来吗?
angular - 如何使用 Angular 11 配置 Brotli 压缩
我想使用 Angular 11 应用程序配置 Brotli 压缩。如果不支持什么是替代解决方案。
compression - devtools 网络中的解压时间 - Chrome/Firefox (Gzip / Brotli)
我想使用 brotli 来压缩一些 javascript 文件。
我设法使用最大压缩级别在服务器端压缩它们。
事实上,这个压缩文件的重量比 GZIP 的要轻。
例如,我在服务器上有我的 file.js.br,如果他支持 BR 编码,它将被发送给客户端。
好的,这很棒,文件重量更轻,客户端下载速度更快。
但是减压时间呢?
当我以最高级别压缩时,我认为解压缩需要更多时间。
问题是,总而言之,GZIP + 解压缩可能比 BROTLI + 解压缩要快,但我不知道,我的优化失败了。
是否可以在控制台中不仅可以看到下载文件的时间,还可以看到解压缩的时间?
先感谢您。
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 请求: