我已经安装了mod_brotli在我的WHM服务器上通过easyapache 4- html,css,js文件等都是压缩。
然后我在官方文档中发现了这个-- https://httpd.apache.org/docs/2.4/mod/mod_brotli.html#precompressed
我已经将它添加到我的WHM (post_virtualhost_global.conf)中的Post VirtualHost包含文件中,而不是htaccess,因为我希望它是服务器范围的。
我如何验证这是否正常工作,并确实为预压缩文件提供服务?无论哪种方式,我都没有找到任何东西可以说,我只能确认正在使用brotli压缩。不管有没有include,CPU负载都差不多,所以我怀疑它可能不会保存压缩文件以备下次使用。
这是虚拟主机,包括:
<IfModule mod_headers.c>
# Serve brotli compressed CSS and JS files if they exist
# and the client accepts brotli.
RewriteCond "%{HTTP:Accept-encoding}" "br"
RewriteCond "%{REQUEST_FILENAME}\.br" "-s"
RewriteRule "^(.*)\.(js|css)" "$1\.$2\.br" [QSA]
# Serve correct content types, and prevent double compression.
RewriteRule "\.css\.br$" "-" [T=text/css,E=no-brotli:1]
RewriteRule "\.js\.br$" "-" [T=text/javascript,E=no-brotli:1]
<FilesMatch "(\.js\.br|\.css\.br)$">
# Serve correct encoding type.
Header append Content-Encoding br
# Force proxies to cache brotli &
# non-brotli css/js files separately.
Header append Vary Accept-Encoding
</FilesMatch>
</IfModule>这是我的/etc/apache2/conf.2/brotli.conf
<IfModule brotli_module>
# Compress only a few types
# https://httpd.apache.org/docs/trunk/mod/mod_brotli.html
AddOutputFilterByType BROTLI_COMPRESS text/plain text/css text/html application/json application/javascript application/x-javascript text/xml application/xml application/xml+rss text/javascript
SetOutputFilter BROTLI_COMPRESS
SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png)$ no-brotli
BrotliFilterNote Input instream
BrotliFilterNote Output outstream
BrotliFilterNote Ratio ratio
LogFormat '"%r" %{outstream}n/%{instream}n (%{ratio}n%%)' brotli
CustomLog "logs/brotli_log" brotli
</IfModule>这是/etc/apache2/conf.modules.d/115_mod_brotli.conf
# Enable mod_brotli
LoadModule brotli_module modules/mod_brotli.so所以,如果有人能帮我弄清楚如何确认这些文件是否是预压缩的,那就太好了。
编辑:我不认为我的文件是预压缩的。有没有人有更多关于这个的信息?我在akk上找不到更多关于它的帖子或文档
发布于 2018-06-20 19:58:30
配置Apache为压缩前的Brotli文件提供服务的:
RewriteCond %{HTTP:Accept-Encoding} br RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME}.br -f RewriteRule ^(.*)$ $1.br [L]
<Files *.js.br>
AddType "text/javascript" .br
AddEncoding br .br
</Files>
<Files *.css.br>
AddType "text/css" .br
AddEncoding br .br
</Files>
<Files *.svg.br>
AddType "image/svg+xml" .br
AddEncoding br .br
</Files>
<Files *.html.br>
AddType "text/html" .br
AddEncoding br .br
</Files>用于检查是否正在提供预压缩的brotli文件的:
您可以记录重写,以查看您的重写是否生效。如果这些都在运行,那么您的预压缩的brotli文件将得到服务。在虚拟主机中,添加以下内容:
LogLevel alert rewrite:trace6重启apache2,点击URL,然后grep重写apache错误日志中的语句。
tail -f /var/log/apache2/error.log | grep '[rewrite'发布于 2020-11-11 08:37:51
我来晚了,但在我通过阿帕奇的Brotli速成课程中,行动是不可能的。
Apache文档所展示的是如何正确地服务于“如果”文件是预先压缩的,因此文本是:“如果它们存在”。
根据我在搜索中收集到的更好的理解,Apache实际上不能对文件进行预压缩,这必须通过二进制或扩展来完成,这超出了Apache的范围。
Apache mod_brotli为您做的是在发送请求时动态地对其进行压缩。在OP的情况下,使用cPanel,如果您启用了mod_brotli,EasyApache4将添加必要的位来服务和压缩在Brotli中概述的文件。同样,这些服务是动态提供的。动态生成并提供服务。据我所知,它们被缓存在内存中,而不是磁盘上。
启用mod_brotli是启用brotli的一种简单方法,但是,由于必须对流经Apache的所有请求进行字面上的压缩,因此最好将提供服务的文件预先压缩为OP所需的文件。我遇到了一个博客,他们谈到了这一点,动态和静态之间的区别是值得使用静态预压缩文件的,然而,如果你有一个小网站,或者可能是一个非常强大的托管平台,那么动态服务可能对你来说很好。
如果我没记错的话,你甚至不需要启用mod_brotli来服务预压缩的.br文件,如果你能找到一种方法来预压缩它们的话。
下面是一个使用PHP预压缩文件的示例:https://github.com/kjdev/php-ext-brotli
到目前为止,还没有人用可行的方法将文件预压缩为Brotli (因为我也在寻找),但我需要指出的是,Apache不做预压缩,如果你正在寻找一种静态的方式来服务Brotli .br文件,你将不得不继续你的搜索。
发布于 2018-04-11 23:20:15
只需暂时删除对/etc/apache2/conf.2/brotli.conf的引用并重新启动Apache,您应该会看到预压缩的brotli文件仍然使用brotli压缩,而动态压缩文件(例如,HTML,或者CSS或JS,其中不存在预压缩文件)现在根本不压缩。
https://stackoverflow.com/questions/49776150
复制相似问题