• 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-compileruglifier 和 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 路径的老项目时,我们就可以轻松为新的静态资源文件设置另一个公开路径。

    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 配置文件中,或其他类似的生产环境配置文件中。

  • 相关阅读:
    使用 Anthem.NET 的经验小结
    使用 Anthem.NET 的常见回调(Callback)处理方式小结
    Anthem.NET 的回调流程图
    客户端调用服务器端方法——ASP.NET AJAX(Atlas)、Anthem.NET和Ajax.NET Professional实现之小小比较
    ASP.NET AJAX(Atlas)和Anthem.NET——管中窥豹般小小比较
    使用Anthem.NET 1.5中的FileUpload控件实现Ajax方式的文件上传
    Access中一句查询代码实现Excel数据导入导出
    Access中复制表
    tensorflow kmeans 聚类
    tensorflow knn mnist
  • 原文地址:https://www.cnblogs.com/zs-note/p/7053233.html
Copyright © 2020-2023  润新知