3

我正在为我的 rails 站点使用 rails 资产管道。assets:precompile 任务正确处理并自动创建我的 css 和 js 文件的 gzip 版本。

我现在添加了一些 xml 资产。资产管道让我可以引用文件,就像我对图像等二进制文件所做的那样。但是,即使我明确地将它们放在“config.assets.precompile”中,预编译任务也不会创建 xml 文件的 gzip 版本。我的 xml 文件是大型资产,使用 gzip 会快 3 倍,所以这是我网站的重要优化。有没有办法将管道配置为带有“.xml”等附加扩展名的 gzip 文件?

笔记:

  • 我正在使用asset_sync gem 将我的所有静态资产移动到CloudFront CDN,所以我不能依赖我的网络服务器(NGINX)来自动为我压缩文件。如果资产管道创建了一个文件的压缩版本, asset_sync将上传文件的压缩版本,但它不会为您创建压缩版本。理论上,我可以分叉asset_sync并在上传之前将其破解为gzip xml文件,或者在预编译和同步任务之间插入一个额外的任务,但我更愿意避免维护gem的一个分支。

  • 我还考虑过使用 .js 扩展名而不是 .xml 来欺骗资产管道,但我更喜欢不那么老套的解决方案。

  • 如果没有干净的方法来仅在其他文件类型上配置 gzip,有没有办法在我可以手动添加 gzip 的文件上添加自定义“后处理”过滤器?我已经看到了有关如何在最终散列资产文件上添加自定义预处理器而不是后处理器的指南。

4

1 回答 1

0

此选项已添加到 Rails 4。XML 会自动压缩,Rails 公开了一个配置选项 zip_files,用于指定要压缩的文件类型。

https://github.com/rails/rails/commit/7cfd1bd76a41bea528c945d821a9fbc3902af479

于 2013-06-15T10:06:51.377 回答