AssetPipeline

Asset Pipeline

合理组织应用的静态资源文件

一.

  1. 连接静态资源,减少渲染网页时的请求次数
    Javascript、CSS –Sprockets–》 主js、css文件
    在production下,Rails在每个文件名中插入SHA265指纹,以便web浏览器缓存
  2. 简化、压缩静态资源
  3. 使用更高级语言编写 e.g SaaS

二. 指纹识别(可以设置关闭)

可通过设置HTTP首部来建议所有缓存(CDN、ISP、网络devices或web浏览器的缓存)都保存该文件副本
Sprockets使用指纹:在文件名中添加Hash

三. Asset pipeline

  1. 原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 第三方代码库的静态资源文件

四.预处理

  1. 顺序 .coffee.erb 先按erb文件处理,再按coffee文件处理

五.开发环境

按清单文件中指定的顺序处理静态资源文件
e.g app/assets/javascripts/application.js
//= require core
–生成HTML–》

1
2
<script src="/assets/core.js?body=1">
//body=1 为参数(sprockets)

六. 生产模式

1
2
3
<%= javascript_include_tag "application">
//生成HTML
<script src="/assets/application......js"></script>

七. CDN内容分发网络

各地服务器的副本,减小服务器压力


Asset Pipeline配置

  1. 产品环境下编译,在项目下运行rake assets:precompile RAILS_ENV=production
    会将app/assets/javascript/application.js、app/assets/stylesheets/application.js和app/assets子目录下的所有非js和css文件编译到public/assets目录下,目录下的文件均打上指纹
  2. 但是上述命令不会自动编译vendor/assets、lib/assets文件夹下文件,若要编译,则通过config.asssets.precompile来配置
  3. 编译到public/assets目录下,需要通过配置nginx、apache等web服务器来访问静态资源
  4. 引入第三方库 e.g 前端文件上传SWFUpload,借助flash

JBuilder配置

访问http…../hello.json