Rails的静态资源管理(五)—— 自定义 Asset Pipeline
官方文档:http://guides.ruby-china.org/asset_pipeline.html
http://guides.rubyonrails.org/asset_pipeline.html
1 压缩 CSS
压缩 CSS 的可选方式之一是使用 YUI。通过 YUI CSS 压缩器可以缩小 CSS 文件的大小。
在 Gemfile 中添加 yui-compressor gem 后,通过下面的设置可以启用 YUI 压缩:
config.assets.css_compressor = :yui
如果我们在 Gemfile 中添加了 sass-rails gem,那么也可以使用 Sass 压缩:
config.assets.css_compressor = :sass
2 压缩 JavaScript
压缩 JavaScript 的可选方式有 :closure、:uglifier 和 :yui,分别要求在 Gemfile 中添加 closure-compiler、uglifier 和 yui-compressor gem。
默认情况下,Gemfile 中包含了 uglifier gem,这个 gem 使用 Ruby 包装 UglifyJS(使用 NodeJS 开发),作用是通过删除空白和注释、缩短局部变量名及其他微小优化(例如在可能的情况下把 if…else 语句修改为三元运算符)压缩 JavaScript 代码。
使用 uglifier 压缩 JavaScript 需进行如下设置:
config.assets.js_compressor = :uglifier
要使用 uglifier 压缩 JavaScript,就必须安装支持 ExecJS 的运行时。macOS 和 Windows 已经预装了此类运行时。
3 用 GZip 压缩静态资源文件
默认情况下,Sprockets 会用 GZip 压缩编译后的静态资源文件,同时也会保留未压缩的版本。通过 GZip 压缩可以减少对带宽的占用。设置 GZip 压缩的方式如下:
config.assets.gzip = false # 禁止用 GZip 压缩静态资源文件
4 自定义压缩工具
在设置 CSS 和 JavaScript 压缩工具时还可以使用对象。这个对象要能响应 compress 方法,这个方法接受一个字符串作为唯一参数,并返回一个字符串。
class Transformer
def compress(string)
do_something_returning_a_string(string)
end
end
要使用这个压缩工具,需在 application.rb 配置文件中做如下设置:
config.assets.css_compressor = Transformer.new
5 修改静态资源文件的路径
默认情况下,Sprockets 使用 /assets 作为静态资源文件的公开路径。
我们可以修改这个路径:
config.assets.prefix = "/some_other_path"
通过这种方式,在升级未使用 Asset Pipeline 但使用了 /assets 路径的老项目时,我们就可以轻松为新的静态资源文件设置另一个公开路径。
6 X-Sendfile 首部
X-Sendfile 首部的作用是让 Web 服务器忽略应用对请求的响应,直接返回磁盘中的指定文件。默认情况下 Rails 不会发送这个首部,但在支持这个首部的服务器上可以启用这一特性,以提供更快的响应速度。
Apache 和 NGINX 支持 X-Sendfile 首部,启用方法是在 config/environments/production.rb 配置文件中进行设置:
config.action_dispatch.x_sendfile_header = "X-Sendfile" # 用于 Apache
config.action_dispatch.x_sendfile_header = 'X-Accel-Redirect' # 用于 NGINX
要想在升级现有应用时使用上述选项,可以把这两行代码粘贴到 production.rb 配置文件中,或其他类似的生产环境配置文件中。
Rails的静态资源管理(五)—— 自定义 Asset Pipeline的更多相关文章
- Rails的静态资源管理(一)——Asset Pipeline是什么
官方文档:http://guides.ruby-china.org/asset_pipeline.html http://guides.rubyonrails.org/asset_pipeline.h ...
- Rails的静态资源管理(四)—— 生产环境的 Asset Pipeline
官方文档:http://guides.ruby-china.org/asset_pipeline.html http://guides.rubyonrails.org/asset_pipeline.h ...
- Rails的静态资源管理(二)—— 如何使用 Asset Pipeline
官方文档:http://guides.ruby-china.org/asset_pipeline.html http://guides.rubyonrails.org/asset_pipeline.h ...
- Rails的静态资源管理(六)—— Asset Pipeline缓存存储方式、预处理、升级等
官方文档:http://guides.ruby-china.org/asset_pipeline.html http://guides.rubyonrails.org/asset_pipeline.h ...
- Rails的静态资源管理(三)—— 开发环境的Asset Pipelin
官方文档:http://guides.ruby-china.org/asset_pipeline.html http://guides.rubyonrails.org/asset_pipeline.h ...
- Ruby Rails学习中:Sass 和 Asset Pipeline,布局中的链接(Rails路由,具名路由),用户注册: 第一步
接上篇: 一.Sass 和 Asset Pipeline Rails 中最有用的功能之一是 Asset Pipeline, 它极大地简化了静态资源文件(CSS.JavaScript 和图像)的生成和管 ...
- 使用Asset Pipeline管理rails生产环境静态资源实现步骤
1. 修改项目中指向静态资源文件的链接 a) 访问静态资源文件 <%= stylesheet_link_tag "application", media: &q ...
- 已有项目使用Asset Pipeline管理静态资源
1. 修改项目中指向静态资源文件的链接 a) 访问静态资源文件 <%= stylesheet_link_tag "application", media: " ...
- NodeJS中的静态资源管理服务
欢迎大家指导与讨论 : ) 一.什么是静态资源 静态资源就是放在服务器中的特定的文件.比较常见的有.css,.png, .js的这一些后缀的文件.下图中的这个html页面便要获取到logo.png和a ...
随机推荐
- oracle修改密码和设置密码有效期
一.修改密码1)修改密码 sql>alter user user01 identified by password; 2)修改密码并unlock sql>alter user user01 ...
- STAR manual
来源:STARmanual.pdf 来源:Calling variants in RNAseq PART0 准备工作 #STAR 安装前的依赖的工具 #Red Hat, CentOS, Fedora. ...
- java深入探究08-连接池,分页
1.连接池 1)自定义连接池 思路:定义一个类Pool->添加4个属性(最大连接数,初始化连接数,当前连接数,用来存放连接对象的LinkList集合对象)->定义一个createConne ...
- linux基础(1)-yum源配置
用linux将近一年了,开始学的东西因为没经常用都忘记了,现在将笔记的东西慢慢整理成自己的博客,也算是看着自己进步.有些东西从他人博客笔记学的,有些是从视频学的,有些是自己填坑积累的. 在linux下 ...
- HBase-修改表结构
HBase修改表结构 package com.hbase.HBaseAdmin; import java.io.IOException; import org.apache.hadoop.conf.C ...
- UvaLive 5811 概率DP
题意 : 有54张牌 问抽多少张牌能使每种花色都至少是给定的数字 两张王牌可以被选择为任何花色 高放学长真是太腻害辣! 设置dp[][][][][x][y] 前四维代表四种真的花色的数量 后两维xy代 ...
- js运算符、关键字、保留字、转义字符
- JMeter接口测试报错,反馈和postman不一样(一)
今天发现一个小的细节 同样一条请求,postman里面直接写就好 JMeter里面需要把编码加上 例如,同样一句话 postman里面这么写,返回值为 但是在JMeter里面这么写 显示结果为 在这里 ...
- VS10_慢_优化
参考网址: http://blog.csdn.net/cll131421/article/details/15341367 1. 我暂时只做了这个: “ 一.VS2010选项视觉体验设置 工具-> ...
- Linux系统用户/用户组/文件权限相关
目录一.Linux系统用户/用户组权限相关二.Linux系统文件权限相关 一.Linux系统用户/用户组权限相关 .命令:usermod 用法:usermod [-agGus] user args ‘ ...