我正在使用Rails资产管道来构建我的网站。assets:precompile任务会自动处理和创建gzip版本的css和js文件。
现在我添加了一些xml资产。资产管道允许我像处理二进制文件(如图片)一样引用这些文件。但是,即使我明确将它们放在“config.assets.precompile”中,预编译任务也不会为xml文件创建gzip版本。我的xml文件是大型资产,使用gzip可以提高3倍速度,因此这对我的网站是一个重要的优化。有没有办法配置管道以gzip附加扩展名(如“.xml”)的文件?
注:
我正在使用asset_sync gem将所有静态资源移动到CloudFront CDN,因此我不能依赖我的web服务器(NGINX)自动为我压缩文件。如果asset-pipeline创建了一个文件的gzipped版本,asset_sync将上传它,但它不会为您创建gzipped版本。理论上,我可以fork asset_sync并在上传之前gzip xml文件或在precompile和sync任务之间插入一个额外的任务,但我更喜欢避免维护gem的fork。
我还考虑过通过使用.js扩展名而不是.xml来欺骗资产管道,但我更喜欢不那么hacky的解决方案。
如果没有干净的方法可以配置gzip以针对其他文件类型,是否有一种方法可以添加自定义“后处理”过滤器来手动添加gzip?我看到过如何添加自定义预处理器的指南,但没有关于最终散列资产文件的后处理器。
现在我添加了一些xml资产。资产管道允许我像处理二进制文件(如图片)一样引用这些文件。但是,即使我明确将它们放在“config.assets.precompile”中,预编译任务也不会为xml文件创建gzip版本。我的xml文件是大型资产,使用gzip可以提高3倍速度,因此这对我的网站是一个重要的优化。有没有办法配置管道以gzip附加扩展名(如“.xml”)的文件?
注:
我正在使用asset_sync gem将所有静态资源移动到CloudFront CDN,因此我不能依赖我的web服务器(NGINX)自动为我压缩文件。如果asset-pipeline创建了一个文件的gzipped版本,asset_sync将上传它,但它不会为您创建gzipped版本。理论上,我可以fork asset_sync并在上传之前gzip xml文件或在precompile和sync任务之间插入一个额外的任务,但我更喜欢避免维护gem的fork。
我还考虑过通过使用.js扩展名而不是.xml来欺骗资产管道,但我更喜欢不那么hacky的解决方案。
如果没有干净的方法可以配置gzip以针对其他文件类型,是否有一种方法可以添加自定义“后处理”过滤器来手动添加gzip?我看到过如何添加自定义预处理器的指南,但没有关于最终散列资产文件的后处理器。
write_asset
方法,GZIPing仅硬编码为JS和CSS文件。在预编译资产之前,您可以运行脚本手动压缩XML文件吗? - mccannfasset_sync
gem 库,你可以创建一个新的 rake 任务(就像 asset_sync 库中的一个这样的任务),并在AssetSync.sync
命令之前添加自己的帮助程序来 gzip 化你的 xml 资源。 - mccannf