问题标签 [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 回答
1185 浏览

apache - apache启动时如何修复“未定义符号:BrotliEncoderTakeOutput”

我已经编译了mod_brotli.so,但是当我重新启动 apache 时,它​​无法加载模块。

错误 :

httpd:/usr/local/apache2/etc/httpd.conf 第 155 行的语法错误:无法将模块/mod_brotli.so 加载到服务器中:/usr/local/apache2/modules/mod_brotli.so:未定义符号:BrotliEncoderTakeOutput

0 投票
1 回答
176 浏览

express - 在 Apostrophe CMS 中实现 Express Static

这完全是一个撇号 CMS 问题。捎带这个从未回答过的问题,我决定在 Stack Overflow 上问我的问题。我在这里找不到主题。

https://forum.apostrophecms.org/t/performance-engineering/61/2

考虑到这一点,ApostropheCMS 是一个非常酷的编辑器内 CMS,它构建在快速服务器上,但我不知道如何访问典型的快速设置中的 app.js 文件。

这个 npm 模块正是我们需要实现的。 https://www.npmjs.com/package/express-static-gzip

要添加以表达的代码:

1)如何将其添加到标准撇号设置?或 2) 撇号CMS 中是否已经有一种方法可以启用 brotli 和 gzip?

0 投票
1 回答
2264 浏览

apache - 如何将 .htaccess 更新为有条件的 gzip on-the-fly

笔记

有人建议这是How to serve precompressed gzip/brotli files with .htaccess的副本。该问题仅旨在提供预压缩文件。这个问题不一样。请看下文。

我的目标

我想在它们存在时提供预压缩的 brotli 文件。如果不存在预压缩的 brotli 文件,则回退到即时gzip 压缩。

当前代码

我正在一个已经从其.htaccess文件中启用了即时 gzip 的站点上工作,如下所示:

修改后的代码

我已经设置了一个使用 brotli 压缩许多静态资产的构建脚本。为了为他们服务,我mod_deflate用以下内容替换了上面的块:

问题

当它们按预期存在时,这会提供 brotli 编码的文件。然而,我现在面临的问题是,因为剩余的资产在构建时没有进行 brotli 编码,所以它们现在没有压缩。

我一直无法弄清楚如何使用不需要我为 gzip 输出进行预压缩的 gzip 回退来为 brotli 提供服务。

任何帮助表示赞赏,谢谢!

0 投票
1 回答
289 浏览

nginx - 为什么 Brotli 命令行只允许到 9 级?

根据 Brotli 的GitHub 主页,动态压缩有 11 个级别。

设置动态压缩 Brotli 质量(压缩)级别。可接受的值在 0 到 11 的范围内。

然而,该项目的另一页显示命令行仅支持 9 级压缩

压缩级别(0-9);较大的值会导致更密集但更慢的压缩

我测试了命令行中的级别 9 是否与级别 11 动态压缩相同。然而事实并非如此。

有没有办法使用 11 级压缩的命令行来压缩文件?

0 投票
1 回答
4334 浏览

node.js - 使用 brotli 压缩和解压 utf8 字符串

我正在尝试编写压缩和解压缩 JSON 字符串,但解压缩总是失败:

我无法发送压缩器返回的缓冲区,因为我需要通过 HTTP 响应发送压缩字符串才能将其取回。

此外,如果我使用base64as 格式,所有工作,但字符串输出大于 simple JSON.stringify,所以我会避免它。

我的代码:

是否有任何参数可以从压缩中获取有效的 utf8 字符串输出?

0 投票
0 回答
127 浏览

python - flask webservice API 是否支持 Brotli 压缩请求?

我想要一个用 Flask (python3) 编写的 REST Web 服务端点,它接受用 Brotli 压缩的消息。Flask 支持吗?

一种解决方法是使用类似于以下的非压缩请求正文:

并稍后在代码中将“内容”解压缩为 json。

这是一种有效的方法吗?或者是否有另一个支持 brotli 的 python 库?

免责声明:我不是网络服务专家

0 投票
1 回答
896 浏览

nginx - Nginx:缓存 Brotli 压缩代理上游响应

我在 Nginx 中为动态生成但很少更改的资源启用了 Brotli 压缩。

我的期望是,当 Nginx 缓存上游响应时,它也会缓存压缩结果。因此,我假设启用 Brotli 的 CPU 成本可以忽略不计。相反,我看到了 perf top与 Brotli 相关的性能影响。

我验证了缓存到上游服务器的工作。但是,Nginx 仅将未压缩的上游请求存储在其缓存中。因此,它必须为每个请求运行昂贵的 Brotli 压缩。那就是问题所在。

有一些来源(与 gzip 压缩有关)建议在上游进行压缩,或者如果这不是创建第二个 Nginx 来代理请求的选项,它扮演上游的角色并进行压缩。这两种解决方案都不是很优雅。

有没有办法让 Nginx 不仅缓存未压缩的上游请求,还缓存压缩的结果?

也许我忽略了一些。这是一个简化的配置:

0 投票
1 回答
480 浏览

delphi - 在 Delphi 中解码 Brotli

如何使用 Indy 或 ICS 库在 Delphi 中解码使用 Brotli 压缩的 http 响应?默认情况下,它们似乎都不包含对它的支持。

0 投票
0 回答
419 浏览

.net - 如何在特定应用程序上禁用 BrotliCompressionModule

默认情况下,IIS 安装了 gzip 压缩 HTTP 模块。后来,我为 IIS 安装了 Brotli Compression HTTP Module 以提高浏览内容的压缩率。在 ApplicationHost.config 中,brotli 已添加到如下三个地方。

  1. 全局模块
  2. http压缩
  3. 模块

我有仪表板应用程序,它是 32 位应用程序,兼容在 IIS 上运行,在 IIS 中安装 Brotli 压缩 HTTP 模块之前,应用程序运行良好。

安装 brotli 压缩后,由于 brotli 停止了 DashboardApplication 池,应用程序无法运行。然后我找到了这个问题的以下根本原因。

Brotli 是 64 位应用程序,它不允许在 IIS 上使用我的 32 位应用程序。基于论坛解决方案,我添加了 preConditon="bitness64",它有助于单独运行 64 位应用程序的 globalModules。

上述解决方案有助于避免停止应用程序池。然后提出了新问题,因为找不到 BrotliCompressionModule 文件。我们找到了从我的应用程序的 web.config 中删除 brotli 模块的解决方案,如下所示。它有助于解决找不到文件的问题。

然后,另一个问题 -HTTP 错误 500.19 - 出现错误代码 0x800700c1 的内部服务器错误。

我们已经避免了对局部部分的 brotli 压缩,但不是在部分中。

如果我从 httpCompression 部分删除了 Brotli,我的 32 位仪表板应用程序运行良好。但它不会压缩 brotli 模块中的其他应用程序。

我怀疑我们也需要在 httpCompression 部分避免 brotli,但我找不到解决方案。

注意:我需要 gzip 和 br(Brotli) 压缩。因为 Brotli 被用于我的其他 64 位应用程序。

这是否可以禁用 IIS 上特定 32 位应用程序的 brotli 压缩?同时,Brotli 需要为其他应用程序站点工作。

提前致谢。

0 投票
1 回答
154 浏览

google-cloud-storage - 通过 Google 存储提供压缩文件

我想从Google 存储桶为我的网站提供静态文件。为此,我想压缩文件,考虑使用Brotli压缩,但有些浏览器不支持Brotli 压缩。所以他们建议使用gzip作为后备。

我不知道是否有基于浏览器支持从谷歌存储中提供文件。例如,如果浏览器支持brotli,它应该获取brotli版本,或者它应该获取gzip

如何做到这一点?