• Rails的静态资源管理(三)—— 开发环境的Asset Pipelin


    官方文档:http://guides.ruby-china.org/asset_pipeline.html

    http://guides.rubyonrails.org/asset_pipeline.html

    在开发环境中,Asset Pipeline 会按照清单文件中指定的顺序处理静态资源文件。

    对于清单文件 app/assets/javascripts/application.js

    //= require core
    //= require projects
    //= require tickets

    会生成下面的 HTML:

    <script src="/assets/core.js?body=1"></script>
    <script src="/assets/projects.js?body=1"></script>
    <script src="/assets/tickets.js?body=1"></script>

    其中 body 参数是使用 Sprockets 时必须使用的参数。

    1 检查运行时错误

    在生产环境中,Asset Pipeline 默认会在运行时检查潜在错误。要想禁用此行为,可以设置:

    config.assets.raise_runtime_errors = false

    当此选项设置为 true 时,Asset Pipeline 会检查应用中加载的所有静态资源文件是否都已包含在 config.assets.precompile 列表中。如果此时 config.assets.digest 也设置为 true,Asset Pipeline 会要求所有对静态资源文件的请求都包含指纹(digest)。

    2 找不到静态资源时抛出错误

    如果使用的 sprockets-rails 是 3.2.0 或以上版本,可以配置找不到静态资源时的行为。如果禁用了“静态资源后备机制”,找不到静态资源时抛出错误。

    config.assets.unknown_asset_fallback = false

    如果启用了“静态资源后备机制”,找不到静态资源时,输出路径,而不抛出错误。静态资源后备机制默认启用。

    3 关闭指纹

    通过修改 config/environments/development.rb 配置文件,我们可以关闭指纹:

    config.assets.digest = false

    当此选项设置为 true 时,Rails 会为静态资源文件的 URL 生成指纹。

    4 关闭调试

    通过修改 config/environments/development.rb 配置文件,我们可以关闭调式模式:

    config.assets.debug = false

    当调试模式关闭时,Sprockets 会对所有文件进行必要的预处理,然后把它们连接起来。此时,前文的清单文件会生成下面的 HTML:

    <script src="/assets/application.js"></script>

    当服务器启动后,静态资源文件将在第一次请求时进行编译和缓存。Sprockets 通过设置 must-revalidate Cache-Control HTTP 首部,来减少后续请求造成的开销,此时对于后续请求浏览器会得到 304(未修改)响应。

    如果清单文件中的某个文件在两次请求之间发生了变化,服务器会使用新编译的文件作为响应。

    还可以通过 Rails 辅助方法启用调试模式:

    <%= stylesheet_link_tag "application", debug: true %>
    <%= javascript_include_tag "application", debug: true %>

    当然,如果已经启用了调式模式,再使用 :debug 选项就完全是多余的了。

    在开发模式中,我们也可以启用压缩功能以检查其工作是否正常,在需要进行调试时再禁用压缩功能。

  • 相关阅读:
    springMVC的@RequestMapping的参数和用法
    springMVC的helloword
    eclipse 导入MyEclipse创建的web项目该如何启动?
    解决mysql中文乱码
    java核心技术 卷1 基础知识—对象与继承
    Java核心技术 卷1 基础知识—概述、环境
    python爬虫框架之scrapy的快速上手
    如何评测软件工程知识技能水平
    金融文本挖掘的业务领域建模
    金融文本挖掘中的针对业务的用例建模
  • 原文地址:https://www.cnblogs.com/zs-note/p/7053152.html
Copyright © 2020-2023  润新知