Кэширование <>

Общие сведения

Элемент <caching> позволяет включать или отключать кэширование выходных данных страниц для приложения iis 7. Этот элемент также позволяет настроить, будут ли службы IIS кэшировать выходные данные страницы в пользовательском режиме, режиме ядра или в обоих режимах, а также какие ограничения кэширования выходных данных вы хотите наложить (если таковые есть).

Элемент <caching> также содержит <profiles> элемент , содержащий коллекцию параметров кэша вывода, которые можно применить к ASP.NET страницам.

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

Кэширование выходных данных страниц сокращает нагрузку на сервер и время отклика. Кэширование выходных данных лучше всего работает с полудинамичными страницами, такими как страница ASP.NET, зависящая от таблицы базы данных, которая редко меняется.

Кэширование выходных данных не требуется для статических файлов, таких как HTML, JPG или GIF- файлы, и может привести к большим затратам на память для динамических ASP.NET или СТРАНИЦ PHP, которые считывают данные из базы данных, которая часто меняется.

Совместимость

Версия Примечания
IIS 10.0 Элемент <caching> не был изменен в IIS 10.0.
IIS 8,5 Элемент <caching> не был изменен в IIS 8.5.
IIS 8,0 Элемент <caching> не был изменен в IIS 8.0.
IIS 7,5 Элемент <caching> не был изменен в IIS 7.5.
IIS 7.0 Элемент <caching> появился в IIS 7.0.
IIS 6,0 Н/Д

Настройка

Элемент <caching> включен в установку iis 7 по умолчанию.

Инструкции

Настройка кэширования выходных данных страниц

  1. Откройте диспетчер служб IIS:

    • Если вы используете Windows Server 2012 или Windows Server 2012 R2:

      • На панели задач щелкните диспетчер сервера, выберите Сервис, а затем диспетчер служб IIS.
    • Если вы используете Windows 8 или Windows 8.1:

      • Удерживая нажатой клавишу Windows, нажмите букву X и щелкните панель управления.
      • Щелкните Администрирование, а затем дважды щелкните Диспетчер служб IIS.
    • Если вы используете Windows Server 2008 или Windows Server 2008 R2:

      • На панели задач нажмите кнопку Пуск, наведите указатель на пункт Администрирование, а затем выберите Пункт Диспетчер служб IIS.
    • Если вы используете Windows Vista или Windows 7:

      • На панели задач нажмите кнопку Пуск, а затем панель управления.
      • Дважды щелкните Администрирование, а затем дважды щелкните Диспетчер служб IIS.
  2. В области Подключения перейдите к подключению, сайту, приложению или каталогу, для которого требуется настроить кэширование выходных данных страниц.

  3. На панели Главная прокрутите страницу до пункта Кэширование выходных данных, а затем дважды щелкните Кэширование выходных данных.
    Снимок экрана: кэширование выходных данных, выбранное на домашней панели веб-сайта по умолчанию.

  4. В области Действия нажмите кнопку Добавить...

  5. В диалоговом окне Добавление правила кэша введите расширение имени файла, которое требуется кэшировать, в поле Расширение имени файла , а затем выберите параметр Кэширование в пользовательском режиме , кэширование в режиме ядра или и то, и другое.

  6. Выберите параметры, которые нужно использовать для кэширования, и нажмите кнопку ОК.
    Снимок экрана: диалоговое окно

Конфигурация

Элемент можно настроить <caching> на уровне сервера в файле ApplicationHost.config, на сайте, в приложении или на уровне каталога в файле Web.config.

Атрибуты

Атрибут Описание
enabled Дополнительный логический атрибут.

Указывает, включено ли кэширование выходных данных страниц.

Значение по умолчанию — true.
enableKernelCache Дополнительный логический атрибут.

Указывает, включено ли кэширование ядра.

Значение по умолчанию — true.
maxCacheSize Необязательный атрибут uint.

Указывает максимальный размер выходного кэша.

Примечание: Этот параметр действует только на уровне файла ApplicationHost.config. Если задать это свойство на более низком уровне, оно не будет действовать.

Значение по умолчанию — 0.
maxResponseSize Необязательный атрибут uint.

Указывает максимальный размер ответа, который можно кэшировать.

Примечание: Этот параметр действует только на уровне файла ApplicationHost.config. Если задать это свойство на более низком уровне, оно не будет действовать.

Значение по умолчанию — 262144.

Дочерние элементы

Элемент Описание
profiles Необязательный элемент.

Содержит группу параметров кэша вывода, которые можно применить к ASP.NET страницам.

Образец конфигурации

В следующем примере конфигурации включается кэширование в пользовательском режиме и кэширование в режиме ядра, которые включены по умолчанию в IIS 7.0. Он также использует элемент, <add> содержащийся в элементе <profiles> , для включения кэширования выходных данных для файлов с расширением ASP-имени. Он также использует атрибут политики для вывода кэша страницы до тех пор, пока она не изменится; Он делает то же самое для кэширования ядра с помощью атрибута kernelCachePolicy .

<configuration>
   <system.webServer>
      <caching enabled="true" enableKernelCache="true">
         <profiles>
            <add extension=".asp" policy="CacheUntilChange" kernelCachePolicy="CacheUntilChange" />
         </profiles>
      </caching>
   </system.webServer>
</configuration>

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

<configuration>
   <system.webServer>
      <caching enabled="true" enableKernelCache="true" maxCacheSize="1000" maxResponseSize="512000"/>
   </system.webServer>
</configuration>

Пример кода

В следующих примерах настраивается кэширование выходных данных страницы для файлов с расширением ASP и настройка IIS для кэширования в пользовательском режиме и режиме ядра до тех пор, пока asp-файлы не изменятся.

AppCmd.exe

appcmd.exe set config -section:system.webServer/caching /+"profiles.[extension='asp',policy='CacheUntilChange',kernelCachePolicy='CacheUntilChange']" /commit:apphost

Примечание

При использовании AppCmd.exe для настройки этих параметров для параметра apphostфиксации необходимо задать значение . Это зафиксирует параметры конфигурации в соответствующем разделе расположения в файле ApplicationHost.config.

C#

using System;
using System.Text;
using Microsoft.Web.Administration;

internal static class Sample {
   private static void Main() {
      using(ServerManager serverManager = new ServerManager()) { 
         Configuration config = serverManager.GetApplicationHostConfiguration();
         ConfigurationSection cachingSection = config.GetSection("system.webServer/caching");
         ConfigurationElementCollection profilesCollection = cachingSection.GetCollection("profiles");

         ConfigurationElement addElement = profilesCollection.CreateElement("add");
         addElement["extension"] = @"asp";
         addElement["policy"] = @"CacheUntilChange";
         addElement["kernelCachePolicy"] = @"CacheUntilChange";
         profilesCollection.AddAt(0, addElement);

         serverManager.CommitChanges();
      }
   }
}

VB.NET

Imports System
Imports System.Text
Imports Microsoft.Web.Administration

Module Sample
   Sub Main()
      Dim serverManager As ServerManager = New ServerManager
      Dim config As Configuration = serverManager.GetApplicationHostConfiguration
      Dim cachingSection As ConfigurationSection = config.GetSection("system.webServer/caching")
      Dim profilesCollection As ConfigurationElementCollection = cachingSection.GetCollection("profiles")
      Dim addElement As ConfigurationElement = profilesCollection.CreateElement("add")
      addElement("extension") = "asp"
      addElement("policy") = "CacheUntilChange"
      addElement("kernelCachePolicy") = "CacheUntilChange"
      profilesCollection.AddAt(0, addElement)
      serverManager.CommitChanges()
   End Sub
End Module

JavaScript

var adminManager = new ActiveXObject('Microsoft.ApplicationHost.WritableAdminManager');
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST";
var cachingSection = adminManager.GetAdminSection("system.webServer/caching", "MACHINE/WEBROOT/APPHOST");
var profilesCollection = cachingSection.ChildElements.Item("profiles").Collection;

var addElement = profilesCollection.CreateNewElement("add");
addElement.Properties.Item("extension").Value = "asp";
addElement.Properties.Item("policy").Value = "CacheUntilChange";
addElement.Properties.Item("kernelCachePolicy").Value = "CacheUntilChange";
profilesCollection.AddElement(addElement, 0);

adminManager.CommitChanges();

VBScript

Set adminManager = createObject("Microsoft.ApplicationHost.WritableAdminManager")
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST"
Set cachingSection = adminManager.GetAdminSection("system.webServer/caching", "MACHINE/WEBROOT/APPHOST")
Set profilesCollection = cachingSection.ChildElements.Item("profiles").Collection

Set addElement = profilesCollection.CreateNewElement("add")
addElement.Properties.Item("extension").Value = "asp"
addElement.Properties.Item("policy").Value = "CacheUntilChange"
addElement.Properties.Item("kernelCachePolicy").Value = "CacheUntilChange"
profilesCollection.AddElement addElement, 0

adminManager.CommitChanges()