tags:

views:

340

answers:

3

I would like to bundle up css and javascript files. I also want to send far-future expire headers to clients, so I need file versioning.

A quick search across the Internet has shown there are several asset managers developed for Django. Here is a list of those that I could reach:

  1. django-compress
  2. django-assets
  3. django-assetpackager
  4. django-media-bundler
  5. django-mediacat
  6. django-site-assets
  7. django-static-management
  8. django-compressor

They seem to perform more or less the same job. django-compress, django-compressor and django-site-assets seem to be especially promising at the first glance. I will appreciate if someone provides feedback on any of them that will help me choose between them.

+1  A: 

As you have already noticed, they all do the same thing (more or less). I decided to go ahead with django_compressor.

Also, I prefer to set expire headers or apply on-the-fly compression at the web server level. IMHO these operations should not be performed by the application itself, because sometimes it can lead to some issues, for instance setting Cache-Control or expiration headers on error pages etc. The *mod_expires* module is very easy to configure according to your needs. For on-the-fly compression using the DEFLATE output filter, I have used this mod_deflate configuration as is.

Born To Ride
Thanks for the feedback. I followed your choice and I can say django-compressor is incredibly easy to use. Regarding the other issue you mentioned, I have already been setting expire headers and gzipping images at the web server level (lighttpd is the choice), I'll just add css and js to the file types.
shanyu
+2  A: 

I've been using django-compress and I'm happy with it, especially because I can specify the back-end compressor (YUI works best with my JS for example).

I will probably consider switching to django_compressor in the future, but it's too low priority atm.

I would also point out that django-media-bundler has one feature the others don't... automatic building of image sprites. I haven't used it live, so I'm not sure how well it is implemented but that's pretty neat. You can use it just for the sprites and leave css/js for one of the other compressors.

Van Gale
Thanks for the answer. My to-do list includes using css sprites, and I may give django-media-bundler a shot when the time comes. But for the time being I have fallen for the simplicity of django-compressor ;)
shanyu
A: 

Among the contenders I have chosen django-compressor because it is incredibly simple to use. Just put one or two tags (typical scenario: one for css and another for js) in the template and for most cases you are done without modifying anything; you don't even have to declare or modify settings, its default settings are good.

shanyu