Gem 服务器不能开启 gzip 情况下预编译视图模板的 gem

jasl · 2012年08月02日 · 最后由 jasl 回复于 2012年08月02日 · 2230 次阅读

https://github.com/jasl/erb_minifier

@Ben 的灵感,花了一点时间快速实现

在服务器不能开启 gzip 的情况下,minify 视图模板,可以减小文件体积,提高传输速度。 原理很简单,视图模板的地址和查找顺序在 view_paths 这个 list 里,只需要让 precompiled_views 的优先级高于 app/views 即可 另外提供了 rake views:precompile 这个 task 用来 minify 视图模板

我之前有这么做过:

# 去除区域里面的内容的换行标记  
def spaceless(&block)
  data = with_output_buffer(&block)
  data = data.gsub(/\n\s+/," ")
  data = data.gsub(/>\s+</,"> <")
  raw data
end

然后在 apllication.html.erb 里面把内容包起来

你这个是处理 erb 的内容,还是页面执行过后的 HTML 内容?

@huacnlee 只处理 erb。考虑过处理执行过后的 html,但是这样的话性能会非常那啥。。。于是放弃了 这个东西使用场景比较有限吧,没法开启 gzip 的情况,另外 haml 自身就有 minify 的功能也不必要了

@huacnlee 我想明白了,单纯去掉多余的空格和换行,体积并不会降低多少。如果可以的话,渲染完成之后压缩 然后在响应头上增加 content-encoding: gzip 会更好

需要 登录 后方可回复, 如果你还没有账号请 注册新账号