Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to handle javascript & css files across a site?

I have had some thoughts recently on how to handle shared javascript and css files across a web application.

In a current web application that I am working on, I got quite a large number of different javascripts and css files that are placed in an folder on the server. Some of the files are reused, while others are not.

In a production site, it's quite stupid to have a high number of HTTP requests and many kilobytes of unnecessary javascript and redundant css being loaded. The solution to that is of course to create one big bundled file per page that only contains the necessary information, which then is minimized and sent compressed (GZIP) to the client.

There's no worries to create a bundle of javascript files and minimize them manually if you were going to do it once, but since the app is continuously maintained and things do change and develop, it quite soon becomes a headache to do this manually while pushing out new updates that features changes to javascripts and/or css files to production.

What's a good approach to handle this? How do you handle this in your application?

like image 574
Industrial Avatar asked Jun 09 '10 20:06

Industrial


2 Answers

I built a library, Combres, that does exactly that, i.e. minify, combine etc. It also automatically detects changes to both local and remote JS/CSS files and push the latest to the browser. It's free & open-source. Check this article out for an introduction to Combres.

like image 199
Buu Nguyen Avatar answered Oct 25 '22 14:10

Buu Nguyen


I am dealing with the exact same issue on a site I am launching.

I recently found out about a project named SquishIt (see on GitHub). It is built for the Asp.net framework. If you aren't using asp.net, you can still learn about the principles behind what he's doing here.

SquishIt allows you to create named "bundles" of files and then to render those combined and minified file bundles throughout the site.

like image 37
jessegavin Avatar answered Oct 25 '22 16:10

jessegavin