В проведенных нами тестах мы обнаружили огромное преимущество, однако помните о последствиях для процессора.
В рамках одного проекта, над которым я работал, мы отправляли большие объемы данных XML (> 10 мегабайт) клиентам, работающим на .NET. (Я не рекомендую это как способ сделать что-то, это просто ситуация, в которой мы оказались !!) Мы обнаружили, что, поскольку файлы XML стали достаточно большими, библиотеки Microsoft XML не смогли проанализировать файлы XML (машины закончились памяти даже на машинах> 1 гиг). Изменение библиотек синтаксического анализа XML в конечном итоге помогло, но прежде чем мы это сделали, мы включили сжатие GZIP для передаваемых данных, что помогло нам анализировать большие документы. На наших двух веб-серверах на основе Linux мы смогли сгенерировать XML, а затем довольно легко его сжать. Я думаю, что с 50 пользователями, делающими это одновременно (загружая от 10 до 20 этих файлов), мы смогли сделать это нормально, с 50% процессором. Похоже, что сжатие XML лучше обрабатывалось (то есть время разбора / процессора) на серверах, чем в .net-интерфейсах, но это, вероятно, было связано с вышеуказанными недостатками используемых библиотек Microsoft XML. Как я уже упоминал, есть лучшие библиотеки, которые работают быстрее и используют меньше памяти.
В нашем случае мы также получили значительные улучшения в размере - мы сжимали 50 мегабайт XML-файлов, в некоторых случаях до 10 мегабайт. Это, очевидно, также помогло повысить производительность сети.
Так как мы были обеспокоены влиянием, и будет ли это иметь другие последствия (наши пользователи, казалось, делали вещи большими волнами, поэтому мы были обеспокоены, что у нас не хватит процессора), у нас была переменная конфигурации, которую мы могли бы использовать включить / выключить gzip. Я бы порекомендовал вам сделать это тоже.
Другое дело: мы также заархивировали файлы XML, прежде чем сохранить их в базах данных, и это сэкономило около 50% пространства (файлы XML варьировались от нескольких килобайт до нескольких мегабайт, но в основном довольно маленькие). Вероятно, проще сделать все, чем выбрать определенный уровень, чтобы определить, когда использовать сжатие или нет.