Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/54.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 获取Rails管道到gzip xml资产_Ruby On Rails_Gzip_Asset Pipeline - Fatal编程技术网

Ruby on rails 获取Rails管道到gzip xml资产

Ruby on rails 获取Rails管道到gzip xml资产,ruby-on-rails,gzip,asset-pipeline,Ruby On Rails,Gzip,Asset Pipeline,我正在为我的rails站点使用rails资产管道。assets:precompile任务正确地处理并自动创建我的css和js文件的gzip版本 我现在添加了一些xml资产。资产管道允许我引用这些文件,就像我引用图像等二进制文件一样。但是,预编译任务不会创建xml文件的gzip版本,即使我将它们显式地放在config.assets.precompile中。我的xml文件是一个巨大的资产,使用gzip会快3倍,所以这对我的网站来说是一个重要的优化。是否有任何方法可以将管道配置为具有附加扩展名(如.x

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

我现在添加了一些xml资产。资产管道允许我引用这些文件,就像我引用图像等二进制文件一样。但是,预编译任务不会创建xml文件的gzip版本,即使我将它们显式地放在config.assets.precompile中。我的xml文件是一个巨大的资产,使用gzip会快3倍,所以这对我的网站来说是一个重要的优化。是否有任何方法可以将管道配置为具有附加扩展名(如.xml)的gzip文件

注:

我正在使用asset_sync gem将所有静态资产移动到 CloudFront CDN,所以我不能依赖我的Web服务器NGINX 自动为我gzip文件。将上载一个 gzip文件的版本,如果资产管道创建了一个文件,但 不会为您创建gzip版本。理论上我可以用叉子叉 在上传或下载之前,请同步并将其破解为gzip xml文件 在预编译和同步任务之间插入一个附加任务,但 我宁愿避免保留一个宝石叉

我还想过使用.js来欺骗资产管道 扩展名而不是.xml,但我更喜欢一个不太粗糙的解决方案

如果没有干净的方法,只需在附加文件上配置gzip 类型,是否有方法在文件上添加自定义后处理筛选器 在哪里可以手动添加gzip?我看过关于如何添加的指南 自定义预处理器,但不是最终哈希表上的后处理器 资产档案


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


查看中的write_asset方法,gzip仅硬编码为JS和CSS文件。在预编译资产之前,您能运行一个脚本来手动gzip XML文件吗?谢谢您向我展示了write_资产代码。我不能预先gzip xml文件,因为这样.xml和.xml.gz将被视为两个独立的资产,并分别进行哈希以进行缓存。因此,我必须在预编译之后和同步到cloudfront.Hmm之前执行gzip。在使用AssetSync.sync命令之前,您是否可以创建一个新的rake任务,并添加您自己的自定义帮助程序来gzip升级您的xml资产,而不是将整个资产分成两部分?