问题标签 [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 Brotli 压缩返回零
我正在尝试将大型数据库查询结果存储在 memcached 服务器中以便更快地检索,并在使用brotli进入 memcache 之前压缩数据。
我一直在尝试使用这样的示例对象进行测试:
这是输出:
我正在将对象转换为字符串(对于性能来说可能不是一个好主意,但是使用 brotli 模式 0 并且不进行字符串化不起作用;返回 null ...),压缩它,将 10 条目 uint8array 存储在缓存中服务器,检索一个 10 字节的缓冲区,并解压缩它。但是,解压缩的结果只是一个零数组。这里发生了什么事?我是第一次使用这个压缩库和 memcached 客户端 ( memjs ),所以任何关于如何正确使用它们的信息都非常感谢。
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
我得到了错误。有什么我想念的吗?我很感激任何帮助!
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
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 级,所以动态压缩不是我的选择。
apache - Appache - 由 br (brotli) 压缩的下载文件出现问题
我有使用(brotli/path/to/work/myProject/webgl.wasm
)压缩的文件。我使用 docker 在 MacOs 上设置 apache 并在目录中使用以下文件:br
.htaccess
myProject
问题是,当我转到 Chrome http://myProject.local:3002/webgl.wasm
In network 选项卡时,我看到红色请求:(failed) err::ERR_CONTENT_DECODING_FAILED
。AddEncoding br .wasm
如果我更改br
为 eggzip
或然后浏览器下载文件,问题就存在rar
- 但不会自动解压缩。
但是,当我的朋友将此项目放到 AZURE(他无权访问 apache 配置)时,我可以下载解压缩形式的 webgl.wasm 文件
所以这是可能的!在我的本地 apacheaccept-encoding
标题中,我从来没有br
(当我尝试不同的事情时)。在本地怎么做?
设置
如果您想使用 docker composer 重现问题,只需保存以下文件: dockerfile-apache
file 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
.
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 .wasm
为AddEncoding rar .wasm
(或改为使用zip
, 或none
)时,浏览器下载文件(详细信息),但问题是浏览器自动不解压缩文件(因此它保存压缩文件)。
当我将此.htacces
文件和alice.wasm
文件放到一些类似 AZURE apache 的服务器(但我无权访问它的配置文件)时,浏览器下载文件并即时解压缩(详细信息) - 所以这是可能的。
问题:我应该怎么做才能使 XAMPP 按预期工作?
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.pro和https://tools.keycdn.com/brotli-test,但它失败了,说:不支持 Brotli。
在 PHP 信息中,我在 curl 部分下看到:
在此处未提及 BROTLI 之前,因此安装了一些东西,但正如您所见,值为“否”。
我还需要做什么才能启用 Brotli?
感谢帮助!
git - Git强制推送git不知道的文件改变了?
我正在摆弄 PageSpeed Insights,它引导我将 Webpack 中的 css 和 js 文件压缩为 .br(用 Brotli 压缩)和 .gz(用 gzip 压缩),以便将它们提供给接受它们的浏览器。.htaccess 做出决定。
由于 .htaccess 做出决定,我不得不使用AddType
close。由于 .htaccess 不适用于多扩展名文件名,因此我必须创建一个自定义扩展名,即cssbr
、cssgz
和. 在 .htaccess 中,它们被识别得很好:jsbr
jsgz
这通常有效。对于无法使用压缩文件的浏览器,纯 css 和 js 也有回退。当我进行更改并使用 webpack 更新文件时,一切正常。但是当我结帐到另一个分支并合并时,git 认为我的自定义文件没有改变。.css
并按.js
预期工作,但对于.cssbr
浏览器通知我它无法解码的文件(ERROR_CONTENT_DECODING_FAILED)。我需要做的是再次运行 webpack 并且它可以在本地运行,但是 git 不会提交更改,因为文件似乎没有改变。我尝试删除它们并阅读。
TL;博士:
我有在切换分支或提交时被认为未更改的自定义文件。
我可以从另一个角度寻求解决方案,例如将它们更改为不同的扩展名,但是如何使 .htaccess 与它们一起使用呢?
.htaccess 供参考:
附加信息:根据 PageSpeed Insights 的说法,我使用 webpack 压缩文件,因为在服务器上这样做会增加时间并破坏使用压缩的目的
iis - IIS:有条件地设置和提供 gzip 和 brotli 压缩
我想将一些静态内容提供给浏览器,发现与 gzip 相比,Brotli 将最终下载包的大小减少了 43%。
我首先尝试只设置 Brotli,所有现代浏览器都下载压缩文件。但是当尝试使用 IE11(不支持 brotli)时,下载原始内容而不进行任何影响性能的压缩。
为了解决这个问题,我将 Gzip 和 Brotli 都保存在 IIS 上。但是现在所有的浏览器都只下载 Gzip 格式的内容,这很可能是因为请求头的顺序是 gzip 先出现的。
我想让它有条件,以便默认情况下浏览器以 Brotli 格式下载内容,如果浏览器不支持它,则自动切换到 gzip 格式。
知道怎么做吗?
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 配置文件中的插件构造函数,但这也不起作用。任何帮助将不胜感激,在此先感谢