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

javascript - Nodejs Brotli 压缩返回零

我正在尝试将大型数据库查询结果存储在 memcached 服务器中以便更快地检索,并在使用brotli进入 memcache 之前压缩数据。

我一直在尝试使用这样的示例对象进行测试:

这是输出:

我正在将对象转换为字符串(对于性能来说可能不是一个好主意,但是使用 brotli 模式 0 并且不进行字符串化不起作用;返回 null ...),压缩它,将 10 条目 uint8array 存储在缓存中服务器,检索一个 10 字节的缓冲区,并解压缩它。但是,解压缩的结果只是一个零数组。这里发生了什么事?我是第一次使用这个压缩库和 memcached 客户端 ( memjs ),所以任何关于如何正确使用它们的信息都非常感谢。

0 投票
1 回答
3011 浏览

angular - 添加自定义 webpack 时 getProjectMetadata 不存在

我正在关注本教程,我正在尝试让 brotli 使用 angular 项目我创建了一个 ```custom-webpack.config.js 文件并放在 angular.json 所在的根目录中。(也尝试过 src 文件夹,但这不起作用)我将 angular.json 文件更新为

我得到错误An unhandled exception occurred: Job name "..getProjectMetadata" does not exist.

我也跑了npm i -D compression-webpack-plugin brotli-webpack-plugin ,让我的custom-webpack.config.js文件看起来像

包.json

但是当我运行时,ng build --prod我得到了错误。有什么我想念的吗?我很感激任何帮助!

0 投票
0 回答
748 浏览

nginx - nginx中的brotli配置问题

我正在关注本指南https://www.vultr.com/docs/add-brotli-support-to-nginx-on-ubuntu-18-04

我已经完成了每一步,但我被困在第 4 步——配置 Nginx

当我添加到nginx.conf

运行后出现此错误sudo nginx -t

什么可能导致这种情况?谢谢!

托管服务商:DigitalOcean Server 运行:Ubuntu 20.04 LEMP Nginx 版本:1.17.10

0 投票
0 回答
423 浏览

asp.net-core - 在 ASP .NET Core 3.1 中添加 Brotli 预压缩文件作为响应正文

我在 ASP .NET Core 3.1 中有一个带有 Brotli 的静态预压缩 JS 文件。我希望当对该文件的请求以 .js 结尾时,返回具有相同名称、以 .js.br 结尾的预压缩版本的内容。

我尝试添加一些中间件代码:

我尝试了 2 个 npm 库进行预压缩:

  • brotli - 我在 Chrome 控制台中遇到解码错误
  • brotli-max - 我目前使用的那个,我收到以下错误。

使用该代码,我在 Chrome 中得到net::ERR_HTTP2_PROTOCOL_ERROR响应。有时我在 Visual Studio 2019 中遇到内容长度异常:

响应内容长度不匹配:写入的字节太多

如何正确编写这样的预压缩文件作为响应?我正在做预压缩,因为我使用的是最慢的 Brotli 11 级,所以动态压缩不是我的选择。

0 投票
1 回答
469 浏览

apache - Appache - 由 br (brotli) 压缩的下载文件出现问题

我有使用(brotli/path/to/work/myProject/webgl.wasm )压缩的文件。我使用 docker 在 MacOs 上设置 apache 并在目录中使用以下文件:br.htaccessmyProject

问题是,当我转到 Chrome http://myProject.local:3002/webgl.wasmIn network 选项卡时,我看到红色请求:(failed) err::ERR_CONTENT_DECODING_FAILEDAddEncoding br .wasm如果我更改br为 eggzip或然后浏览器下载文件,问题就存在rar- 但不会自动解压缩。

但是,当我的朋友将此项目放到 AZURE(他无权访问 apache 配置)时,我可以下载解压缩形式的 webgl.wasm 文件

在此处输入图像描述

所以这是可能的!在我的本地 apacheaccept-encoding标题中,我从来没有br(当我尝试不同的事情时)。在本地怎么做?

设置

如果您想使用 docker composer 重现问题,只需保存以下文件: dockerfile-apachefile with one line: FROM httpd:2.4-alpine. 以下docker-composer.yml文件(/path/to/work 您可以更改为本地路径)

使用以下 apache 配置文件httpd.conf(我从 apache 复制它并稍作修改 - 但我将所有内容放在这里 - 轻松使用它来重现问题)。

和以下httpd-vhosts.conf文件(您可以在此处更改路径)

这是示例br文件的链接(以及其他一些文件)alice.br - 您可以将其名称更改为webgl.wasm进行测试。

如果您将所有这些文件放在一个导演中并由docker-compose up -d --build.

0 投票
1 回答
393 浏览

apache - XAMPP .htaccess AddEncoding br brotli

我没有安装我的 MacOs HighSierra 新XAMPP (osx-7.4.6-0-vm ) 并启动它- 服务器在 IP 192.168.64.2 上运行。然后我安装/opt/lampp并单击到Explore。Finder 窗口打开,我转到 directory htdocs/。然后在htdocs我创建文件夹assets并在其中复制文件alice.wasm(此文件使用brotli (br)压缩)。您可以使用此 jsfiddle 生成器下载此测试(brotli 压缩)文件。在里面htdocs我创建以下 .htaccess文件

问题

当我去http://192.168.64.2/assets/alice.wasm浏览器没有下载文件并且在 chrome>networks 选项卡中我看到(这里有更多细节

(失败)net::ERR_CONTENT_DECODEDING_FAILED

但是,当我更改AddEncoding br .wasmAddEncoding rar .wasm(或改为使用zip, 或none)时,浏览器下载文件(详细信息),但问题是浏览器自动不解压缩文件(因此它保存压缩文件)。

当我将此.htacces文件和alice.wasm文件放到一些类似 AZURE apache 的服务器(但我无权访问它的配置文件)时,浏览器下载文件并即时解压缩(详细信息) - 所以这是可能的。

问题:我应该怎么做才能使 XAMPP 按预期工作?

0 投票
1 回答
209 浏览

apache - 如何使用 DirectAdmin 在 Debian 10 上启用 Brotli?

我在 Debian 10 服务器上运行最新版本的 DA (1.61.3)、PHP 7.4.7 和 Apache 2.4.43。我想添加 Brotli 支持,这样做:

  • 在 Debian 上安装 Brotli 软件包(apt-get install brotli)
  • 将 brotli 模块添加到 apache 以进行自定义构建,如下所示:https ://help.directadmin.com/item.php?id= 191 (--with-brotli)

在此之后,我检查了https://www.brotli.prohttps://tools.keycdn.com/brotli-test,但它失败了,说:不支持 Brotli。

在 PHP 信息中,我在 curl 部分下看到:

phpinfo

在此处未提及 BROTLI 之前,因此安装了一些东西,但正如您所见,值为“否”。

我还需要做什么才能启用 Brotli?

感谢帮助!

0 投票
1 回答
57 浏览

git - Git强制推送git不知道的文件改变了?

我正在摆弄 PageSpeed Insights,它引导我将 Webpack 中的 css 和 js 文件压缩为 .br(用 Brotli 压缩)和 .gz(用 gzip 压缩),以便将它们提供给接受它们的浏览器。.htaccess 做出决定。

由于 .htaccess 做出决定,我不得不使用AddTypeclose。由于 .htaccess 不适用于多扩展名文件名,因此我必须创建一个自定义扩展名,即cssbrcssgz和. 在 .htaccess 中,它们被识别得很好:jsbrjsgz

这通常有效。对于无法使用压缩文件的浏览器,纯 css 和 js 也有回退。当我进行更改并使用 webpack 更新文件时,一切正常。但是当我结帐到另一个分支并合并时,git 认为我的自定义文件没有改变。.css并按.js预期工作,但对于.cssbr浏览器通知我它无法解码的文件(ERROR_CONTENT_DECODING_FAILED)。我需要做的是再次运行 webpack 并且它可以在本地运行,但是 git 不会提交更改,因为文件似乎没有改变。我尝试删除它们并阅读。

TL;博士:

我有在切换分支或提交时被认为未更改的自定义文件。
我可以从另一个角度寻求解决方案,例如将它们更改为不同的扩展名,但是如何使 .htaccess 与它们一起使用呢?

.htaccess 供参考:

附加信息:根据 PageSpeed Insights 的说法,我使用 webpack 压缩文件,因为在服务器上这样做会增加时间并破坏使用压缩的目的

0 投票
1 回答
1150 浏览

iis - IIS:有条件地设置和提供 gzip 和 brotli 压缩

我想将一些静态内容提供给浏览器,发现与 gzip 相比,Brotli 将最终下载包的大小减少了 43%。

我首先尝试只设置 Brotli,所有现代浏览器都下载压缩文件。但是当尝试使用 IE11(不支持 brotli)时,下载原始内容而不进行任何影响性能的压缩。

为了解决这个问题,我将 Gzip 和 Brotli 都保存在 IIS 上。但是现在所有的浏览器都只下载 Gzip 格式的内容,这很可能是因为请求头的顺序是 gzip 先出现的。

我想让它有条件,以便默认情况下浏览器以 Brotli 格式下载内容,如果浏览器不支持它,则自动切换到 gzip 格式。

知道怎么做吗?

0 投票
1 回答
2103 浏览

reactjs - 将 brotli 与 AWS Cloudfront + S3 一起使用

我正在使用 Cloudfront 和 S3 部署 React 应用程序,我想启用 brotli 进行压缩。我看过一些使用 lambda@edge 解决这个问题的教程。我的 Cloudfront 发行版的行为配置如下

在此处输入图像描述

我还将“自动压缩对象”选项设置为“否”。我分别为源请求和查看器请求关联了以下两个 lambda 函数:

  • 来源请求:

  • 观众要求:

当我尝试在浏览器中使用 Cloudfront 的域名打开应用程序时,会抛出 Uncaught SyntaxError:bundle.js:1 中的非法字符。但是,当我使用 S3 的端点打开应用程序时,它运行良好。以下是我的webpack.config.js

我已将代码放在此 GitHub 存储库中(我还上传了 dist/ 目录,这是我上传到 S3 以进行部署的目录)。我是这项技术的新手,所以我没有想法。我还尝试将 .html 和 .png 扩展名添加到 Webpack 配置文件中的插件构造函数,但这也不起作用。任何帮助将不胜感激,在此先感谢