apache - 在 Apache 上使用 Brotli 提供预压缩内容

标签 apache include compression virtualhost brotli

我已经通过 easyapache 4 在我的 WHM 服务器上安装了 mod_brotli - html、css、js 文件等都被压缩了。

然后我在官方文档中遇到了这个 - https://httpd.apache.org/docs/2.4/mod/mod_brotli.html#precompressed

我已将其添加到 WHM (post_virtualhost_global.conf) 中的 Post VirtualHost 包含文件中,而不是 htaccess,因为我希望它是服务器范围内的。

我如何验证这是否有效并且确实提供预压缩文件?我还没有找到任何说法,我只能确认正在使用 brotli 压缩。无论是否包含包含,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 上找不到任何进一步的帖子或文档

最佳答案

只需暂时删除对 /etc/apache2/conf.2/brotli.conf 的引用并重新启动 Apache,您应该会看到预压缩的 brotli 文件仍然以 brotli 压缩方式交付,而动态压缩文件(例如,不存在预压缩文件的 HTML、CSS 或 JS)现在根本不压缩。

关于apache - 在 Apache 上使用 Brotli 提供预压缩内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49776150/

相关文章:

linux - 如何使用 ssh + 密码连接到 Aptana studio 3? (SFTP)

jsp - Tiles vs. JSP包括

c++ - 无法用visual studio 2017编译静态库项目

Javascript 客户端 JPEG 图像压缩

c - 如何让 LZO 处理文件流?

apache - Ubuntu apache 创建有效的自签名证书 ssl https(删除连接不安全)

java - 与客户端证书的 SSL 重新协商导致服务器缓冲区溢出

c# - 使用 Apache 服务器的 ClickOnce 更新

c++ - 包含后是否需要前向声明?

python - 不使用 DEFLATE 的野外 ZIP 文件?