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:
- django-compress
- django-assets
- django-assetpackager
- django-media-bundler
- django-mediacat
- django-site-assets
- django-static-management
- 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.
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.
New projects have been created since this question was asked.
You might want to take a look at django-pipeline, it's pretty nifty.
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.
FWIW since djangopluggables.com doesn't exist anymore and nobody has mentioned it here yet: The most recent comparison is on djangopackages.com, where django_compressor is the most used one ATM. Haven't tried it with 1.4 though as Jay Taylor warned in his comment.
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.
来源:https://stackoverflow.com/questions/1684062/asset-managers-for-django-choose-which-one