Serving Up User Contributed Media From A Separate Server

One commonly recommended practice in Django (although applicable elsewhere) is to serve up your static media from a different server than the one running Django for dynamic pages.

This becomes a slight challenge when you have user-contributed media (like allowing users to upload photos).

Here are some possibilities I can think of:

I guess S3-based solutions add some extra issues but ideas 2, 3 and 4 would be applicable.

Anyone have experiences (good or bad) with any of these? Any possibilities I'm missing?

The original post was in the categories: django web but I'm still in the process of migrating categories over.

The original post had 16 comments I'm in the process of migrating over.