Книга: ASP.NET MVC Framework
Сжатие данных
Сжатие данных
Другим методом оптимизации производительности является сжатие данных для уменьшения размера потока данных между клиентом и сервером. В случаях, когда клиент имеет малую пропускную способность своего интернет-соединения, такой вид оптимизации будет играть существенную роль.
Сервер IIS, на котором работают приложения ASP.NET MVC, предлагает комплексный механизм, позволяющий на лету сжимать исходящие данные из сервера и принимать сжатые данные от клиента. Для включения этого механизма в IIS7 можно воспользоваться опцией Compression, в которой можно включить сжатие как статического (скрипты, CSS-стили), так и динамического контента.
В случае, если включение динамического сжатия недоступно, следует включить его поддержку через панель добавления инструментов Windows (рис. П2.1).
Сжатие данных, передаваемых между клиентом и сервером, работает следующим образом:
1. Клиент отправляет запрос серверу, в заголовке которого может передать информацию о том, что он поддерживает сжатие данных. Этот заголовок передается следующим образом: Accept-Encoding: gzip, deflate
.
2. IIS-сервер, получив такой заголовок, уверен, что клиент может обрабатывать сжатые данные, поэтому, если разработчик настроил сервер на сжатие данных, результат запроса будет сжат с помощью алгоритма GZip или Deflate и отправлен клиенту со следующим опознавательным заголовком: Content-Encoding: gzip
.
3. Клиентский браузер, получив данные с заголовком Content-Encoding: gzip
, понимает, что данные сжаты и, используя свои встроенные механизмы, распаковывает их, чтобы отобразить результат запроса пользователю.
4. При разработке приложения и работе с механизмом сжатия на сервере IIS следует учитывать, что не все браузеры или другие клиентские приложения, которые отправляют запросы, могут поддерживать сжатие данных. Существует целый ряд клиентов, например, многие мобильные браузеры, которые не поддерживают сжатие передаваемых данных.