Один из недостатков выключения буфера (вы можете использовать Flush, но я действительно не понимаю, почему вы делаете это в этом сценарии) заключается в том, что Клиент не узнает, какова длина Контента в начале загрузка. Следовательно, диалог браузера на другом конце не так важен, он не может сказать, насколько достигнут прогресс.
Лучшей альтернативой (IMO) является запись желаемого содержимого во временный файл (возможно, с использованием GUID для имени файла), а затем отправка перенаправления клиенту, указывающего на этот временный файл.
Есть ряд причин, почему этот подход лучше: -
- Клиент получает хорошую информацию о ходе выполнения в диалоговом окне сохранения или в приложении, получающем данные
- Некоторые приложения могут эффективно использовать выборки из байтового диапазона, которые хорошо работают только тогда, когда сервер доставляет «статический» контент.
- Временный файл можно использовать повторно для удовлетворения запросов других клиентов
Есть ряд недостатков: -
- Если для создания содержимого файла требуется некоторое время, запись во временный файл может, следовательно, оставить некоторое время ожидания до получения данных и увеличить время загрузки.
- Если требуется строгая защита контента, в котором находится статический файл, может возникнуть проблема, хотя использование случайного имени файла GUID несколько уменьшает это
- Необходима некоторая обработка старых временных файлов.