Pull to refresh

Тюнинг производительности для ASP.NET. Часть 1

Reading time3 min
Views6.5K
Original author: Mads Kristensen
Untitled-1В первой части уловок с производительностью для ASP.NET и IIS7 мы рассмотрим некоторые простые, но тем не менее мощные возможности web.config файла. Используя некоторые трюки мы увеличим производительность любого нового или существующего веб-сайта, не изменяя ничего, кроме web.config файла.

Следующие XML-сниппеты должны быть помещены в секцию <system.webServer> в web.config.

HTTP-сжатие


На практике, вы обычно можете настроить сжатие по HTTP в ASP.NET, используя сторонние или собственные библиотеки. С IIS7 вы можете отбросит все это и использовать встроенный компрессор, доступный с web.config. Добавьте следующую строчку кода для включения HTTP-компрессии:
<urlCompression doDynamicCompression="true" doStaticCompression="true" dynamicCompressionBeforeCache="true"/>

По умолчанию, сжиматься могут только текстовые типы данных.

doDynamicCompression


Установите данный атрибут в true и вы получите сжатие для таких динамически созданных данных, как страницы, представления, обработчики. Ничто не мешает это сделать.

doStaticCompression


Данный атрибут позволяет выбирать, хотите ли вы или нет сжимать статические файлы: стили и скрипты. Изображения и другие не текстовые данные по умолчанию не сжимаются. Советую включить данную опцию.

dynamicCompressionBeforeCache


Если вы делаете кэширование вывода страниц в ASP.NET сайтах, то вы можете попросить IIS7 сжимать результат перед тем, как поместить в кэш. Проблемы могут возникнуть только если у вас собственный механизм кэширования вывода. Попробуйте активировать данную возможность и протестировать приложение. Если все отлично работает, то почему бы не оставить его включенным?

Заметка


По умолчанию, только текстовые типы содержимого подлежат сжатию. Это означает, что если вы посылаете application/x-javascript, как тип содержимого, то вам следует изменить его на text/javascript. Если вы используете собственные модули на сайтах, тогда возможно у вас будут конфликты с IIS7 компрессией.

Ресурсы


Кеширование статических файлов


Для увеличения скорости загрузки важно, чтобы все, что могло кэшироваться браузером, кэшировалось браузером. Сюда входят такие статические файлы, как изображения, стили, скрипты. Позволив браузеру кэшировать все эти файлы, ему не придется запрашивать их заново на протяжении периода кэша. Это сохраняет много трафика вам и вашим посетителям, делая загрузку страниц быстрее. Правильно настроенный первичный кэш браузера гораздо быстрее вызовет события load и DOMContentLoaded.

Добавив данный сниппет в ваш web.config, все статические файлы будут кэшированы браузером на год:
<staticContent>
  <clientCache cacheControlMode="UseMaxAge" cacheControlMaxAge="365.00:00:00"/>
</staticContent>

Данные настройки устанавливают срок годности файлов на один год вперед. Происходит это, когда IIS указывает в HTTP-заголовке иструкции для браузера, в данном случае он просит о добавлении файла в кэш. Если же вы нажмете F5 или Ctrl+F5, браузер запросит файлы вне зависимости от их даты истечения.

Главной проблемой кэширования на клиентской стороне – это изменение статических файлов до истечения срока годности. Посетитель со старой версией в кэше не увидит новых файлов, пока не очистит кэш браузера, нажав F5. Поэтому данные настройки нужно использовать с осторожностью и, думаю, следует сократить срок годности. Во второй части я рассмотрю данную проблему и предложу простой способ для её решения.

Заметка


Убедитесь, что важные пользовательские данные не кэшируются браузером. Иначе они будут доступны другим пользователям, использующие данный браузер.

Ресурсы

Tags:
Hubs:
Total votes 22: ↑12 and ↓10+2
Comments4

Articles