Некоторые из ваших оптимизаций важны для улучшения производительности вашего сервера, но не путайте их с оптимизацией использования полосы пропускания. Другими словами, gzip / deflate являются релевантными, но Apache, обслуживающий статическое содержимое, не имеет значения (даже если это важно).
Теперь для решения вашей проблемы вам нужно рассмотреть три вещи: сколько данных отправляется, сколько соединений требуется для получения данных и насколько хороши соединения.
В большинстве случаев первая область покрыта с помощью deflate / gzip, expires, минимизации javascript и т. Д., Поэтому я могу добавить только одну или две вещи, о которых вы можете не знать. Во-первых, вам следует перейти на Django 1.1, если вы этого еще не сделали, потому что он лучше поддерживает заголовки ETags / Expires для ваших представлений Django. Возможно, у вас уже есть эти заголовки, работающие должным образом для статических данных из Apache, но если вы используете более старый Django, они (вероятно) не будут правильно установлены в ваших динамических представлениях.
Для следующей области, количества соединений, вам необходимо объединить файлы javascript и css в как можно меньшее количество файлов, чтобы уменьшить количество соединений. Также очень полезным может быть объединение ваших файлов изображений в одно «спрайтовое» изображение. Существует несколько проектов Django для решения этого аспекта: django-compress , django-media-bundler (единственный, который создает спрайты изображений), и вы также можете увидеть этот SO ответ .
Для последней области того, насколько хороши соединения, вы должны посмотреть на глобальный CDN, как предложено Алексом, или, по крайней мере, разместить свой сайт у интернет-провайдера ближе к вашим пользователям. Это может быть сложно для Африки, которая, по моему опыту, не может даже получить приличную связь с европейскими интернет-провайдерами (по крайней мере, южная Африка ... северная Африка могла бы быть лучше).