Когда ваше приложение Django разворачивается в общедоступной сети, его статические файлы обслуживаются непосредственно Apache или Nginx без какого-либо участия Django или вашего кода на Python. По крайней мере, это то, что должно происходить. Статические файлы — это таблицы стилей, образы, все, что находится на вашем сервере, что возвращается в ответ на запрос и не нуждается в динамической сборке. Apache или Nginx могут обслуживать эти файлы быстро, и могут справляться с проблемами кэширования, сообщая клиенту, когда у него уже есть текущая версия и нет необходимости загружать новую.
Но когда Вы разрабатываете приложение Django, Вы, как правило, обслуживаете его, используя сервер разработки Django, на браузере на Вашей локальной машине, а не беспокоитесь о реальном веб-сервере, таком как Apache. Это обычно более удобно по нескольким причинам. Основная из них может заключаться в том, что сервер разработки загружает новый код по мере того, как Вы его изменяете и не требует перезапуска.
Часто возникает одна проблема, при изменении таблицы стилей или других статических ресурсов, вы обнаружите, что ваш браузер упорно держится за устаревшие, кэшированные версии. Сервер разработки Django, похоже, не знает, что файлы изменились. Хуже того, кажется, что время от времени происходит кэширование самих файлов, так как даже указание вашему браузеру перезагрузить страницу часто не обновляет кэш. Итак, теперь вы перезапускаете сервер разработки, как если бы это был Apache.