Chez Rails, quand on fait une nouvelle version, on optimise
J'ai un peu recommencé à faire du dev en Rails et j'ai notamment mis à niveau en Rails 2.0 une appli que j'ai pour un site. Et j'ai lu ensuite le mode d'emploi, c'est à dire la liste des changements. Elle est disponible ici.
Ce que j'ai particulièrement apprécié, ce sont ces deux paragraphes :
We’ve also made it much easier to structure your JavaScript and stylesheet files in logical units without getting clobbered by the HTTP overhead of requesting a bazillion files. Using javascript_include_tag(:all, :cache => true) will turn public/javascripts/.js into a single public/javascripts/all.js file in production, while still keeping the files separate in development, so you can work iteratively without clearing the cache.
Along the same lines, we’ve added the option to cheat browsers who don’t feel like pipelining requests on their own. If you set ActionController::Base.asset_host = “assets%d.example.com�, we’ll automatically distribute your asset calls (like image_tag) to asset1 through asset4. That allows the browser to open many more connections at a time and increases the perceived speed of your application.
Ce que cela signifie : une concaténation des fichiers javascripts en un seul entre le développement et la production, une excellente idée que je pousse à fond dès que je vois un site avec 5 js qui ralentissent son affichage. Rails prouve encore une fois à quel point c'est un framework agile en prenant en compte ce besoin.
L'autre partie, c'est l'usage de la parallélisation des fichiers de ressources pour essayer d'exploiter un maximum de connexions pour un navigateur donné ( et surtout IE).
Wow! Je ne pensais pas que des recommandations de performance pouvaient ainsi traverser l'ether et revenir directement dans un framework. Il faut croire qu'il y a des gens intelligents et qui écoutent.
J'aimerais que la notion de cache Http et de compression des ressources texte soient aussi bien intégrés, mais je pense qu'il faudrait que je m'y colle, ce qui n'est pas de mon niveau vraiment. On laissera ces problématiques aux serveurs web (qui sont certainement plus adaptés pour cett question).