Asset Pipeline
合理组织应用的静态资源文件
一.
- 连接静态资源,减少渲染网页时的请求次数
Javascript、CSS –Sprockets–》 主js、css文件
在production下,Rails在每个文件名中插入SHA265指纹,以便web浏览器缓存 - 简化、压缩静态资源
- 使用更高级语言编写 e.g SaaS
二. 指纹识别(可以设置关闭)
可通过设置HTTP首部来建议所有缓存(CDN、ISP、网络devices或web浏览器的缓存)都保存该文件副本
Sprockets使用指纹:在文件名中添加Hash
三. Asset pipeline
- 原rails放在public中,asset pipeline放在app/assets
静态资源文件放在app/assets,进行预处理
Sprockets中间处理(添加指纹)
2.不要使用require_tree指令,在config/application.rb下配置
清单文件是不是要添加?
js文件夹和css文件夹javascripts、stylesheets
官网只介绍了css和js文件添加清单文件,在清单文件中添加//=require_tree .
3.app/assets 应用自有的静态资源文件
lib/assets 存储自有代码库的静态资源文件(共享)
vendor/assets 第三方代码库的静态资源文件
四.预处理
- 顺序 .coffee.erb 先按erb文件处理,再按coffee文件处理
五.开发环境
按清单文件中指定的顺序处理静态资源文件
e.g app/assets/javascripts/application.js
//= require core
–生成HTML–》
1 | <script src="/assets/core.js?body=1"> |
六. 生产模式
1 | <%= javascript_include_tag "application"> |
七. CDN内容分发网络
各地服务器的副本,减小服务器压力
Asset Pipeline配置
- 产品环境下编译,在项目下运行rake assets:precompile RAILS_ENV=production
会将app/assets/javascript/application.js、app/assets/stylesheets/application.js和app/assets子目录下的所有非js和css文件编译到public/assets目录下,目录下的文件均打上指纹 - 但是上述命令不会自动编译vendor/assets、lib/assets文件夹下文件,若要编译,则通过config.asssets.precompile来配置
- 编译到public/assets目录下,需要通过配置nginx、apache等web服务器来访问静态资源
- 引入第三方库 e.g 前端文件上传SWFUpload,借助flash
JBuilder配置
访问http…../hello.json