RubyonRails 优化之:拆分静态文件

来源:百度文库 编辑:神马文学网 时间:2024/04/29 23:01:07
RubyonRails 优化之:拆分静态文件
@由DIrk 发表于 2007-01-04 Thursday
影响 RubyonRails 成为 Web 开发主流解决方案的最大阻力因素依然是执行效率问题,这应该是 Ruby语言本身决定的。目前来说,除了使用可以使用合理的 cache机制进行优化,我们还有一个非常容易做到的增效措施:把你站点中的静态文件拆分出去,使用高性能 Web 服务器专门处理静态文件,让 Rails 的router 从无谓的文件服务中解脱出来。
这里所说的静态文件,主要是指 ROR应用中用到的,但不需要 Rails 解释执行的原始文件,比如图片文件、CSS 风格定义文件、Javascript 代码文件等等,只要是可以离开Rails 独立存在的,都可以归为静态文件。每次向 Rails 请求文件,Rails 都会去查找相应的router,并进行一定的操作,对于静态文件,Rails 只是一个单纯的 Web 服务器而已,那我们何不使用更加高效的软件代替 Rails执行这部分功能呢。
ROR 有一个设置开关,可以自定义静态文件的引用起始地址:
ActionController::Base.asset_host = "http://assets.dirk.sh"
这个选项可以设置在 config/environment.rb 文件中,这样你的开发环境和产品环境使用同样的配置参数。
进行如上配置后,你可以使用专门为静态文件进行优化的 Web 服务器提供对静态文件的服务,比如 Lighttpd、thttpd 等。Rails 只用于对动态请求的解析和执行。
需要注意的是,如果想要让你的 Rails 应用方便这种 asset_host 的调整,你的源代码中应该充分使用 Rails 中 ActionView 提供的链接帮助函数,不要将静态文件的引用地址 hardcode 到代码中,诸如:
ActionView::Helpers::AssetTagHelper::image_tag —针对图片的引用
ActionView::Helpers::AssetTagHelper::javascript_include_tag —针对Javascript的引用
ActionView::Helpers::AssetTagHelper::stylesheet_link_tag —针对CSS文件的引用
ActionView::Helpers::FormTagHelper::image_submit_tag —表单图片按钮的引用
ActionView::Helpers::UrlHelper::link_image_to —带链接的图片引用
更多信息可以好好研究 RailsAPI 文档;比较重要的一点就是,ROR 为 Web 开发定制了大量有效的方法和规则,我们只要遵守,就可以获得预料不到的好处!
标签:rubyonrails,优化,静态文件