Реализации веб-сервера в asp.net coreweb server implementations in asp.net core
Содержание:
- Modules in IIS
- Проверка правильности установки и регистрации IIS, ASP.NET и WCFEnsure That IIS, ASP.NET and WCF Are Correctly Installed and Registered
- RequestQueueLimitPerSession и его распространение на старые версии .net
- PHP
- Развёртывание Django 1.9 на IIS 7+
- Управление IIS
- Установка и настройка IIS
- Минимальная установка: установка службы WASMinimal Installation: Installing WAS
- Настройка MySQL
- Публикация на IIS
- Кэширование вывода
Modules in IIS
IIS provides a new architecture that is different from previous versions of IIS. Instead of keeping the majority of functionality within the server itself, IIS include a Web server engine in which you can add or remove components, called modules, depending on your needs.
Modules are individual features that the server uses to process requests. For example, IIS uses authentication modules to authenticate client credentials, and cache modules to manage cache activity.
The new architecture provides the following advantages over previous versions of IIS:
- You can control which modules you want on the server.
- You can customize a server to a specific role in your environment.
- You can use custom modules to replace existing modules or to introduce new features.
The new architecture also improves security and simplifies administration. By removing unnecessary modules, you reduce the server’s attack surface and memory footprint, which is the amount of memory that server worker processes use on the machine. You also eliminate the need to manage features that are unnecessary for your sites and applications.
Проверка правильности установки и регистрации IIS, ASP.NET и WCFEnsure That IIS, ASP.NET and WCF Are Correctly Installed and Registered
Для правильной работы служб WCF, размещенных в IIS, необходимо установить WCF, IIS и ASP.NET.WCF, IIS, and ASP.NET must be installed for IIS-hosted WCF services to function correctly. Процедуры установки WCF (в составе .NET Framework), ASP.NET и IIS зависят от операционной системы.The procedures for installing WCF (as part of the .NET Framework), ASP.NET, and IIS vary depending on your operating system. Дополнительные сведения об установке WCF и .NET Framework см. в статье установка .NET Framework для разработчиков.For more information about installing WCF and the .NET Framework, see Install the .NET Framework for developers. Чтобы установить службы IIS в Windows 10, откройте » программы и компоненты » на панели управления , а затем выберите включить или отключить компоненты Windows.To install IIS on Windows 10, open Programs and Features in Control Panel and then select Turn Windows features on or off. В окне компоненты Windowsвыберите службы IIS и нажмите кнопку ОК.In Windows Features, select Internet Information Services and then choose OK.
Инструкции по установке служб IIS в других операционных системах можно найти в статье Установка IIS в Windows Vista и Windows 7 и Установка IIS 8,5 на Windows Server 2012 R2.Instructions for installing IIS on other operating systems can be found at Install IIS on Windows Vista and Windows 7 and Install IIS 8.5 on Windows Server 2012 R2.
Процесс установки .NET Framework автоматически регистрирует WCF в службах IIS, если службы IIS уже имеются на компьютере.The installation process for .NET Framework automatically registers WCF with IIS if IIS is already present on the machine. Если службы IIS установлены после .NET Framework, для регистрации WCF в IIS и ASP.NET требуется дополнительный шаг.If IIS is installed after the .NET Framework, an additional step is required to register WCF with IIS and ASP.NET. Это можно выполнить указанным ниже способом в зависимости от операционной системы.You can do this as follows, depending on your operating system:
-
Windows 7 и Windows Server 2003. Используйте средство регистрации ServiceModel (ServiceModelReg.exe) для регистрации WCF в службах IIS.Windows 7 and Windows Server 2003: Use the ServiceModel Registration Tool (ServiceModelReg.exe) tool to register WCF with IIS. Чтобы использовать это средство, введите ServiceModelReg.exe/i/x в Командная строка разработчика для Visual Studio.To use this tool, type ServiceModelReg.exe /i /x in the Developer Command Prompt for Visual Studio.
-
Windows 7. Наконец, необходимо убедиться, что ASP.NET настроен для использования .NET Framework версии 4 или более поздней.Windows 7: Finally, you must verify that ASP.NET is configured to use the .NET Framework version 4 or later. Это можно сделать, запустив средство ASPNET_Regiis с параметром.You do this by running the ASPNET_Regiis tool with the option. Дополнительные сведения см. в разделе ASP.NET IIS Registration Tool.For more information, see ASP.NET IIS Registration Tool.
RequestQueueLimitPerSession и его распространение на старые версии .net
Из песочницы
Доброго времени суток! В этой статье хотел бы поделиться решением неожиданной проблемы, возникшей в одном из проектов, над которым я сейчас работаю.
Что может быть опасного в обновлении .net 4.6.1 до .net 4.6.2? Я считал что для процесса обновления минорной версией достаточно прочитать release notes, чтобы избежать серьезных проблем. Однако, как выяснилось, Microsoft может привнести очень интересные и занимательные изменения в обход release notes, которые смогут вас занять в «скучные летние вечера и выходные дни».
Под катом будет описание одной проблемы возникшей из-за обновления и пути её решения, а так же немного исходников .net.
PHP
Установка PHP
Откроется страница с несколькими версиями пакета — там как мы ставим PHP как FastCGI, нам нужна версия «Non Thread Safe» (не потокобезопасная), так как она будет работать быстрее. И так, скачиваем zip-архив на сервер:
Для установка PHP на Windows достаточно просто распаковать содержимое архива в любой каталог, например, C:\Program Files\PHP:
Делаем копию файла php.ini-production и переименовываем его в php.ini:
Открываем на редактирование данный файл и правим следующее:
open_basedir = C:\inetpub\wwwroot
…
cgi.force_redirect = 0
…
short_open_tag = On
* где open_basedir — директория, в которой будут разрешены PHP-скрипты; cgi.force_redirect — указывает будет ли скрипты обрабатываться при прямом запросе или только при запросе от веб-сервера. В IIS запросы контролируются самим веб-сервером, поэтому опция может оказать обратный эффект; short_open_tag — позволяет использовать короткий вид открывающих тегов для PHP.
Проверяем, что PHP работает. Открываем командную строку Windows — переходим в каталог с установленным PHP:
cd «C:\Program Files\PHP»
Запускаем php с параметром -m:
php -m
Мы должны получить список подключенных модулей:
bcmath
calendar
Core
ctype
…
Но если мы получим ошибку, связанную с отсутствием файла VCRUNTIME140.dll:
… необходимо установить Microsoft Visual C++ Redistributable. Переходим на страницу https://www.microsoft.com/ru-RU/download/details.aspx?id=52685 и скачиваем компонент:
После загрузки, устанавливаем его на сервер, после чего, снова пробуем вывести на экран модули php:
php -m
Настройка сайта на IIS для работы с PHP
И так, веб-сервер поднят, PHP установлено, сайт работает. Настроим связку IIS + PHP. Открываем панель управления IIS — переходим к созданному сайту и кликаем по Сопоставления обработчиков:
В меню справа кликаем по Добавить сопоставление модуля:
Заполняем поля:
* где:
- Путь запроса — путь к файлам, при вызове которых действует сопоставление. В данном примере для всех файлов, заканчивающихся на php.
- Модуль — действующий модуль для обработки запроса.
- Исполняемый файл — файл, который будет выполнять обработку запроса. В данном примере мы выбрали файл из скачанного и распакованного нами архива PHP.
- Имя — произвольное имя для сопоставления.
Нажимаем OK и подтверждаем действие. Сопоставление создано.
Теперь заходим в Документ по умолчанию:
… и добавляем новый документ:
* в данном примете мы указываем, что по умолчанию сервер будет искать файл index.php, если таковой не указан явно в запросе.
Открываем в проводнике папку, в которой находятся файлы сайта (в нашем примере, C:\inetpub\wwwroot\php). Создаем файл index.php с содержимым:
<?php
phpinfo();
?>
PHP Manager в IIS
Скачиваем дополнение:
Выполняем установку на сервере, запустив загруженный файл. Открываем диспетчер управления IIS — мы должны увидеть PHP Manager:
Развёртывание Django 1.9 на IIS 7+
Из песочницы
Предисловие
Всем привет!
Не так давно ко мне обратились с просьбой о создании сайта. Интересный крупный проект с множеством «хочу вот это». Среди пожеланий были два главных, определивших web framework для написания, это интернационализация и панель администратора. Как уже понятно из заголовка статьи, таким framework’ом стала Django.
На старте, и почти всё время разработки, у нас не было одной вещи — сервера. Было доменное имя, бодрым темпом разрабатывался сайт, к проекту присоединился дизайнер, но сервер нам так выделить не могли. Все показы сайта проходили на моём ноутбуке, не давая возможности заказчику сесть вечером с кружкой кофе, расслабиться и насладиться тем, что мы уже для него сделали. А также, отсутствие возможности показать нашу работу людям лишало нас получения обратной связи.
И вот, можно сказать на днях, свершилось чудо — у нас появился сервер. И как следствие этого — эта статья.
Управление IIS
При установке IIS, он автоматически создает каталог с именем C:\inetpub\wwwroot, который представляет ваш веб-сайт. Все файлы в этом каталоге будет отображаться, как будто они находятся в корневом каталоге вашего веб-сервера.
Чтобы добавить дополнительные страницы на ваш веб-сервер, можно скопировать файлы HTML, ASP или ASP.NET напрямую в каталог C:\Inetpub\wwwroot. Например если добавить файл TestFile.html в этот каталог, вы можете запросить его в браузере через URL-адрес http://localhost/TestFile.html. Вы даже можете создавать вложенные папки для группирования
связанных ресурсов. Например, вы можете получить доступ к C:\inetpub\wwwroot\MySite\MyFile.html через браузер, используя URL-адрес http://localhost/MySite/MyFile.html.
Каталог wwwroot удобен для запуска простых примеров и статичных страниц. Для правильного использования ASP.NET вы должны сделать свой собственный виртуальный каталог для каждого веб-приложения, которое вы создаете. Например, вы можете создать папку с любым именем на любом диске вашего компьютера и поместить ее в виртуальный каталог IIS как будто она расположена в каталоге C:\inetpub\wwwroot.
Прежде чем начать работу, вам нужно запустить диспетчер служб IIS. Его можно найти в меню Start (Пуск). Конкретное расположение может зависеть от используемой версии Windows (IIS —> Диспетчер служб IIS). Ярлык программы будет располагаться в разделе Programs (Программы) или Administrative Tools (Администрирование). Начальная страница IIS Manager показана на рисунке ниже:
Теперь нужно ознакомиться с рядом терминов, используемых в IIS. В левой части окна IIS Manager отображается запись с именем используемого сервера. Наш сервер имеет имя PROFESSORWEB, сгенерированное по умолчанию Windows 8, которое будет использоваться в большинстве примеров. В центральной области отображается представление сервера. Это представление отображает набор значков, которые позволяют конфигурировать параметры сервера. В правой части экрана расположен список доступных действий. Например, в этом представлении можно запускать, останавливать и перезапускать сервер.
Если развернуть элемент сервера в древовидном представлении в левой части экрана, отобразится элемент Sites (Сайты), содержащий единственную запись Default Web Site (Веб-сайт по умолчанию). Сайт — это коллекция файлов и каталогов, образующих веб-сайт. На одном сервере IIS может поддерживать несколько сайтов, как правило, на различных портах TCP/IP (по умолчанию используется порт 80). Сочетание имени сервера и порта сайта образует первую часть URL-адреса. Например, при использовании сервера mywebserver с сайтом, подключенным к порту 80, URL-адрес выглядит следующим образом:
http://mywebserver:80
Каждый сайт может содержать множество файлов и каталогов. Каждый из них образует часть URL-адреса. Так, URL-адрес статической страницы mypage.html, расположенной в каталоге myfiles, будет следующим:
http://mywebserver:80/myfiles/mypage.html
В некоторых ситуациях имя, под которым сервер известен вам, и имя, которое клиенты используют для получения содержимого, будут различаться
Мы оставим этот нюанс без внимания, но администратор сервера или компания, предоставляющая услуги хостинга, предоставят необходимые сведения, если это важно для конкретного сервера
Чтобы проверить работоспособность IIS выберите Default Web Site и в правой области диспетчера служб IIS выберите пункт «Запустить». После этого нажмите кнопку «Обзор *.80 (http)» чтобы открыть страницу сайта в браузере:
Как видите, в моем случае я поменял порт используемый по умолчанию (с 80 на 8080). Я сделал это, т.к. на 80-м у меня запущен локальный Apache-сервер. Если у вас возникает такая же проблема, то изменить порт можно щелкнув правой кнопкой мыши по сайту (Default Web Site) и выбрав в контекстном меню «Изменить привязки» (Bindings). После этого в диалоговом окне можно изменить порт, используемый по умолчанию.
Итак, каждый сервер может поддерживать множество сайтов, каждый из которых работает на другом порту или с другим IP-адресом. Каждый сайт может иметь множество файлов и каталогов, и сочетание этих элементов предоставляет информацию о URL-адресе. Мы вернемся к URL-адресам и использованию IIS Manager при рассмотрении каждого из подходов к развертыванию.
Установка и настройка IIS
Windows Server 2008 имеет в комплекте сильно изменённую роль веб-сервера IIS. Изменения коснулись как самого веб-сервера, так и инструментов его управления. В этой заметке я коснусь только простейших настроек. Впрочем и решённую задачу назвать сложной проблематично. Итак, имеется сервер, на базе его надо настроить ftp-сервер с доступом по паролю к определённой папке и http-сервер с анонимным доступом к этой же папке, но без возможности просмотра содержимого папки.
Для начала рассмотрим процесс установки IIS. Роль веб-сервера доступна в списке стандартных ролей Windows Server 2008. И для её установки достаточно эту роль добавить.
В связи с требованиями задачи список компонентов устанавливаемых по умолчанию надо подкорректировать. Directory Browsing и Basic Authentication нам не понадобятся.
По завершении мастера установки можно проверить корректность работы сервера подключившись в браузере к http://localhost. В случае успешной установки должен отобразиться следующий сайт:
К сожалению, в комплект Windows Server 2008 не входит FTP Publishing Service 7.0. Он доступен на сайте Майкрософта. Ссылка на скачивание здесь. При установке выбираем все предлагаемые компоненты:
После установки FTP вернёмся к конфигурированию нашего веб-сервера. Консоль управления IIS очень сильно изменилась по сравнению с шестой версией и выглядит следующим образом:
В Authentication проверяем что к нашему веб-сайту доступ имеют только анонимные пользователи. В IIS 7.0 доступ к ресурсам сервера анонимных пользователей идёт от имени служебной учётной записи IUSR.
и права доступа к файловым ресурсам (пользователю IUSR даём только право Read на нашу папку).
Теперь попробуем посмотреть в браузере что у нас получилось. При попытке доступа к localhost по http-протоколу получаем чистый экран
Если же будем обращаться к конкретному файлу — то сервер даст его скачать
Вернёмся к конфигурированию нашего веб-сервера. Займёмся настройками FTP. Для этого не обязательно делать отдельный ftp-сайт, можно подключить ftp к текущему нашему сайту. Делается это через команду Add FTP Publishing с консоли действий нашего IIS manager’а.
Для начала в FTP Authentication проверяем, что анонимный доступ к ftp-серверу отключен, включена только Basic аутентификация.
Далее, настраиваем FTP Authorization Rules. Предварительно создаем две локальных группы FTP Admins и FTP Users, например. Первой даём права на чтение-запись на нашем сервере, второй — только на чтение.
Затем, в FTP Directory Browsing можно настроить внешний вид FTP-сайта и различные сообщения сервера.
На этом конфигурация нашего сервера заканчивается. Проверяем отсутствие доступа анонимных пользователей и доступ для пользователя — члена группы FTP Admins:
Ну и напоследок, проверяем через ftp-клиент Total Commander’a права доступа для учётки из группы FTP Admins и для учётки из группы FTP Users.
Минимальная установка: установка службы WASMinimal Installation: Installing WAS
Минимальная установка всего пакета IIS 7,0 заключается в установке службы активации процессов Windows (WAS).The minimal installation of the whole IIS 7.0 package is to install the Windows Process Activation Service (WAS). WAS — это автономная функция, которая является единственной функцией IIS 7,0, доступной для всех операционных систем Windows Vista (Домашняя базовая, Домашняя расширенная, Business, максимальная и корпоративная).WAS is a standalone feature and it is the only feature from the IIS 7.0 that is available for all Windows Vista operating systems (Home Basic, Home Premium, Business, and Ultimate and Enterprise).
На панели управления щелкните программы , а затем — Включение или отключение компонентов Windows , которые перечислены в разделе программы и компоненты, компонент WAS показан в списке, как показано на следующем рисунке.From the Control Panel, click Programs and then click Turn Windows features on or off which is listed under Programs and Features, the WAS component is shown in the list as in the following illustration.
Этот компонент включает следующие подкомпоненты:This feature has the following sub-components:
-
Среда .NET.NET Environment
-
API-интерфейсы конфигурацииConfiguration APIs
-
Модель процессаProcess Model
Если выбран корневой узел WAS, по умолчанию проверяется только вложенный узел модели процесса .If you select the root node of WAS, only the Process Model sub-node is checked by default
Обратите внимание, что при такой установке устанавливается только служба WAS, поскольку поддержка веб-сервера отсутствует.Please note that with this installation you are only installing WAS, because there is no support for a Web server
Чтобы сделать WCF или любое приложение ASP.NET работать, установите флажок среда .NET .To make WCF or any ASP.NET application work, check the .NET Environment checkbox. Это означает, что все компоненты WAS необходимы для того, чтобы обеспечить хорошую работу WCF и ASP.NET.This means that all of WAS components are required to make WCF and ASP.NET to work well. Они автоматически выбираются при установке какого либо из этих компонентов.These are automatically checked once you install any of those components.
Настройка MySQL
После завершения установки запускается MySQL Server Instance Configuration Wizard (его можно запустить вручную из Компьютер → Program Files → MySQL → MySQL Server 5.5 → bin → MySQLInstanceConfig.exe). Нажимаем Next:
Далее выбираем пункт Detailed Configuration (расширенная настройка):
Выбираем сценарий установки: Developer Machine — для установки на домашний компьютер (наш выбор), Server Machine — для установки на сервер, Dedicated MySQL Server Machine — для установки на сервер полностью выделенный под MySQL. Эти опции влияют в первую очередь на объем потребляемой MySQL памяти:
MySQL поддерживает два основных типа БД (InnoDB — с поддержкой транзакций и MyISAM — без транзакций). Multifunctional Database — будет установлена поддержка БД обоих типов (наш выбор). Transactional Database Only — будет установлена поддержка только InnoDB. Non-Transactional Database Only — будет установлена поддержка только MyISAM.
Если на предыдущем этапе была выбрана поддержка InnoDB, здесь можно настроить расположение файлов данных InnoDB:
Поддержка одновременных соединений. Decision Support — до 20 одновременных соединений (наш выбор). Online Transaction Processing — до 500 соединений. Manual Setting — ручная установка количества соединений.
Отмечаем опции «Enable TCP/IP Networking» и «Enable Strict Mode». Port Number оставляем без изменений — 3306. Если к серверу планируются прямые подключения с других компьютеров, отмечаем опцию «Add firewall exception for this port» (открыть порт в брандмауэре windows).
Выбираем кодировку по умолчанию. Сейчас самый разумный выбор — это UTF-8. Выбираем опцию Best Support For Multilingualism:
Обязательно отмечаем опцию «Install As Windows Service» (запускать как службу Windows). Отмечаем «Launch the MySQL Server automatically», если нужен автозапуск службы.
Завершающий этап. Установка пароля администратора (root). Этот пароль лучше не терять! Опции «Enable root access from remote machines» и «Create An Anonymous Account» отмечать не рекомендуется, т.к. они снижают безопасность.
Далее нажимаем Next и Execute. На этом базовая настройка завершена.
Примечание: если вы до этого устанавливали MySQL, а потом удалили или переустановили, то на последнем этапе будет возникать ошибка 1045 (Connection Error). Чтобы этого не было, придется удалить MySQL, затем удалить скрытую папку MySQL находящуюся в C:\ProgramData (в этой папке находятся файлы информации о данных пользователя). После этого повторите процедуру установки и настройки.
Теперь осталось проверить успешно ли прошла установка. Открываем Пуск → Все программы → MySQL → MySql Server 5.5 → MySQL 5.5 Command Line Client (утилита для работы с MySQL в командной строке).
Далее вводим пароль администратора (root). Если пароль правильный, вы попадете в командную строку ( mysql> ). Введите команду: show databases; (точка с запятой на конце обязательны). В результате вы должны увидеть список баз данных (как минимум две — information_schema и mysql). Это означает, что сервер работает правильно. Закрываем командную строку выполнив команду exit.
Публикация на IIS
Последнее обновление: 26.03.2018
После завершения работы над приложением приложение его можно опубликовать, чтобы оно стало доступно широкому кругу пользователей.
Как правило, для хостирования приложения будет применяться один из внешних хостингов, список которых можно посмотреть здесь.
В данном же случае рассмотрим основные моменты публикации и развертывания приложения на локальном компьютере.
Традиционно веб-сервер IIS (Internet Information Services) применялся для развертывания веб-приложений. Для хостирования веб-приложений ASP.NET Core
также может применяться IIS, только в отличие от предыдущих версий ASP.NET теперь его роль будет сводиться к прокси-серверу.
Хостирование приложений ASP.NET Core на IIS происходит с помощью нативного модуля AspNetCoreModule, который сконфигурирован таким
образом, чтобы перенаправлять запросы на веб-сервер Kestrel. Этот модуль управляет запуском внешнего процесса dotnet.exe, в рамках которого хостируется
приложение, и перенаправляет все запросы от IIS к этому хостирующему процессу.
При разработке в Visual Studio публиковать приложения очень легко — среда разработки имеет для этого весь необходимый инструментарий.
Так, возьмем какой-нибудь проект и в Visual Studio нажмем на него правой кнопкой мыши и в появившемся контекстном меню выберем пункт Publish:
И перед нами откроется окно публикации приложения:
Здесь нам доступно несколько вариантов публикации:
-
Microsoft Azure App Service: публикация в облаке Azure
-
IIS, FTP, etc: публикация через FTP
-
Folder: публикация в виде отдельного пакета в файловой системе текущей рабочей машины
-
Import Profile: импорт профиля, который содержит настройки публикации
-
Microsoft Azure Virtual Machines: публикация в облаке Azure, по сравнению с первой опцией обладает большими возможностями по управлению инфраструктурой развертывания
В данном случае выберем опцию Folder для создания пакета для публикации в файловой системе. И также укажем путь, по которому будет находиться
пакет. В моем случае это каталог «C:\CoreApp». И в конце нажмем на кнопку Publish.
Далее откроется окно, где будут оображаться выбранные настройки конфигурации, и для продолжения публикации нажмем в нем кнопку Publish:
И после окончания публикации по указанному пути (в моем случае это каталог C:\CoreApp) появятся опубликованные файлы.
Настройка IIS
Прежде всего нам надо включить функциональность Web Server (IIS) и настроить роли сервера. Для этого перейдем по пути Панель управления ->
Программы и компоненты -> Включение или отключение компонентов Windows. В списке компонентов найдем Службы IIS (Internet Information Services) и отметим ее:
Здесь также надо отметить подпункт «Службы Интернета» (World Wide Web Services) и все его подпункты, а также подпункт «Консоль управления IIS»
(IIS Management Console).
Нажмем на ОК, и весь необходимый функционал будет добавлен в операционную систему.
После установки этого пакета выполним в командной строке команду iisreset или вручную перезапустим IIS, чтобы сервер применил изменения.
Конфигурация сервера
Для конфигурации IIS перейдем к консоли управления веб-сервером. Для этого перейдем по пути
Панель управления -> Администрирование -> Диспетчер служб IIS:
Нажмем правой кнопкой на узел «сайты» и в контекстном меню выберем пункт «Добавить веб-сайт…». После этого нам откроется окно для добавления нового сайта:
В поле «Физический путь» здесь укажем каталог, в котором опубликовано приложение. А в качестве имени узла определим «localhost». Нажмем на OK, и приложение будет запущено.
Теперь перейдем к пункту Пулы приложений. Выберем пул нашего приложения и справа нажмем на ссылку Основные настройки:
В открывшемся окне для параметра Версия среды CLR .NET установим значение Без управляемого кода:
После этого пул будет перезапущен, и мы сможем обращаться к нашему приложению по адресу localhost.
НазадВперед
Кэширование вывода
Мы уже знаем, что ASP.NET поддерживает собственный механизм кеширования вывода, зачем же использовать еще один подобный механизм в IIS? Ответ на этот вопрос прост: помимо страниц ASP.NET существуют и другие виды содержимого, которое можно кешировать. Например, мы можем кешировать часто запрашиваемые статические файлы изображений или вывод собственных обработчиков HTTP-запросов. Для этой цели как раз и можно использовать механизм кеширования, поддерживаемый веб-сервером IIS.
В IIS имеется два механизма кеширования: кеш в пространстве пользователя и кеш в пространстве ядра.
Кеширование в пространстве пользователя
Так же как ASP.NET, веб-сервер IIS способен кешировать ответы в памяти, чтобы ответы на последующие запросы могли отправляться из кеша в памяти, без обращения к статическим файлам на диске и без вызова программного кода на стороне сервера.
Чтобы настроить кеширование, откройте приложение IIS Manager, выберите свое веб-приложение, откройте настройку Output Caching (Кеширование вывода), щелкните на ссылке Add (Добавить) в панели Actions (Действия), чтобы добавить новое правило кеширования, или выберите существующее правило для редактирования.
Чтобы создать новое правило кеширования в пространстве пользователя, добавьте новое правило, введите расширение имен файлов, которые требуется кешировать, и отметьте флажок User-mode caching (Кеширование в режиме пользователя) в диалоге Add Cache Rule (Добавить правило кеширования), как показано на рисунке ниже:
Отметив флажок, вы получите возможность выбирать, когда кешированный элемент будет удаляться из памяти, после обновления файла на диске или спустя некоторое время с момента кеширования. Для статических файлов больше подходит вариант удаления после обновления, тогда как определение интервала времени больше подходит для динамического содержимого. Щелкнув на кнопке Advanced (Дополнительно) можно получить доступ к настройкам, управляющим кешированием различных версий вывода (согласно параметрам в строке запроса или HTTP-заголовкам).
После добавления правила кеширования, настройки сохраняются в файле web.config приложения, в разделе system.webServer —> caching. Например, для правила кеширования страниц .aspx на срок до 30 минут, с учетом HTTP-заголовка Accept-Language, будет сгенерирован следующий код в конфигурационном файле:
Кеширование в пространстве ядра
В отличие от механизма кеширования в пространстве пользователя, сохраняющего информацию в памяти рабочего процесса IIS, механизм кеширования в пространстве ядра сохраняет информацию в памяти драйвера HTTP.sys. Кеширование в пространстве ядра обеспечивает более короткое время отклика, однако оно поддерживается не всегда. Например, кеширование в пространстве ядра нельзя использовать, когда запрос содержит строку с параметрами запроса или когда запрос не является анонимным запросом.
Настройка правил кеширования в пространстве ядра выполняется почти так же, как кеширование в пространстве пользователя. В диалоге настройки правила установите флажок Kernel-mode caching (Кеширование в режиме ядра) и выберите желаемый способ кеширования.
В одном правиле допускается использовать оба режима кеширования, в пространстве ядра и в пространстве пользователя. В этом случае IIS будет сначала пытаться применить кеширование в пространстве ядра. Если попытка не увенчается успехом, например, когда запрос содержит строку с параметрами, применяется кеширование в пространстве пользователя.
Если выбран вариант кеширования на определенный интервал времени в обоих режима, в пространстве ядра и в пространстве пользователя, оба интервала должны совпадать, в противном случае в обоих режимах будет использоваться интервал, установленный для кеширования в режиме ядра.