Optipipe

Optipipe enables you to correspond to load only required assets, load assets lazy, and so on, about precompiled files.

Specifically, Optipipe provide following functions.

  • Structure of directories to manage using some precompiled assets and being easy to understand dependencies of assets (principally javascripts).
  • A funcion that load only required asset files.
  • A funcion that configure lazyloading asset files that have no problem even if load after onload.

A funcion that load lazy asset files that have no problem even if load after onload

Optipipe enables you to fix your web application's performance by these funtions, when use HTTP/2 protocol.

Read this in other languages: 日本語

Installation

Add this line to your application's Gemfile:

gem 'optipipe'

And then execute:

$ bundle

And then run initial settings:

$ rails g optipipe:install

Configure

Running initial settings create files and directories like following structure.

app/assets/
├── javascripts
│   └── optipipe
│       ├── files
│       │   ├── example.js
│       │   └── example_after_onload.js
│       ├── mappers
│       │   └── example_mapper.yml
│       └── precompiles
│           ├── example_precompile.js
│           └── example_precompile_after_onload.js
└── stylesheets
    └── optipipe
        ├── files
        │   └── example.css
        ├── mappers
        │   └── example_mapper.yml
        └── precompiles
            └── example_precompile.css

All files created initial is sample, please rewriting or delete.

BasicUsage

Helper

Run helper method like following in layout's view files, and you can load asset files each controllers.

<%= optipipe_javascript_include_tag %>
<%= optipipe_stylesheet_link_tag %>

You can configure like following using default mapper when there aren't any mappers meeting a condition. This value is controller_path.

<%= optipipe_javascript_include_tag(default: 'welcome') %>

You can configure mapper's additional conditions by arguments like following.

<%= optipipe_javascript_include_tag(device: 'pc') %>
controller_path: 'welcome'
load_files:
  - example_precompile
after_onload:
  - example_precompile_after_onload
device: 'pc'

Mapper

You can configure precompiled asset files each controllers by Mapper.

controller_path

Please set controller path. If use controller with namespace, join /. (same value of controller_path in ActionController.)

load_files

Please set precompiled asset file's names. Files exist at under optipipe/precompiles.

after_onload

Please set asset file's names loaded after onload on javascript. Files exist at under optipipe/precompiles. This setting is only Javascript's Mapper.

License

The gem is available as open source under the terms of the MIT License.

Author

ykogure