De quelles manières pouvez-vous accélérer le processus de précompilation Rails Asset Pipeline?
Capistrano a sa propre tâche intégrée "déploiement/actifs". Il fera automatiquement le travail pour vous.
La différence entre votre propre tâche artisanale est qu'elle charge uniquement le groupe assets
pour précompiler les actifs, pas l'environnement entier.
cd /home/apps/APP_NAME/releases/20120708184757 && bundle exec rake Rails_ENV=production Rails_GROUPS=assets assets:precompile
https://Gist.github.com/3072362
Si
sont modifiés, il recompilera les actifs. Sinon, cela sautera le processus de compilation, économisera beaucoup de temps.
@import "compass";
directement.Cela fonctionnera à la fois lorsque vous
@import "compass";
ou @import "compass/typography/links/link-colors";
dans SCSS.
Mais @import "compass/typography/links/link-colors";
est 9 fois plus rapide que @import "compass";
lorsque vous compilez des éléments.
En effet, lorsque @import "compass";
, il compile l'ensemble des ressources de la boussole. pas seulement link-colors
partie.
Dans SCSS, nous aimons utiliser partial
pour organiser nos ressources.
Mais seulement si vous avez besoin de partager des variables, ou s'il y a des dépendances nécessaires, sinon
//= require "reset"
//= require "base"
//= require "product"
est plus rapide que
@import "reset";
@import "base";
@import "product";
Lorsque nous utilisons Rails générateur pour générer des contrôleurs. Rails générera également des actifs comme celui-ci)
et monter des actifs dans application.js en utilisant ces techniques:
//= require_tree
Mais les actifs vides (rien de sortie) qui ne contiennent que ces lignes:
# Place all the behaviors and hooks related to the matching controller here.
# All this logic will automatically be available in application.js.
# You can use CoffeeScript in this file: http://jashkenas.github.com/coffee-script/
Il vous en coûtera environ 250 ms pour compiler chacun d'eux. Si vous avez 10 actifs vides, ce sera 2,5 secondes.
Supprimez-les de votre projet ou montez-les individuellement dans application.js comme ceci:
//= require prodcuts
//= require users
//= require albums
css.scss
ou js.coffee
si inutile.custom.css
est custom.css.scss
Compiler du CSS pur et du JS pur est rapide (coûte près de 0 ms). Mais compiler .scss et .coffee coûte encore un certain temps.
vérifier les journaux/production.log
Je viens d'écrire un joyau pour résoudre ce problème dans Rails, appelé turbo-sprockets-Rails . Il accélère votre assets:precompile
en ne recompilant que les fichiers modifiés et en ne compilant qu'une seule fois pour générer tous les actifs.
Notez que j'essaie également de fusionner ce correctif dans Rails 4.0.0, et éventuellement Rails 3.2.9 (voir https: //github.com/Rails/sprockets-Rails/pull/21 ). Mais pour l'instant, ce serait génial si vous pouviez m'aider à tester le turbo-sprockets-Rails gem, et faites-moi savoir si vous avez des problèmes.
(2) éviter d'utiliser des partiels
Dans SCSS, nous aimons utiliser partiel pour organiser nos actifs
Le dernier railsconf a été introduit libsass.
Les choses vont probablement changer et être réécrites en C, les partiels scss promettent d'être plus rapides