Может ли IIS обслуживать наиболее часто используемые статические файлы из ОЗУ? - PullRequest
1 голос
/ 03 апреля 2009

Можно ли настроить сервер IIS таким образом, чтобы он кэшировал наиболее часто используемые статические файлы (двоичные файлы) с диска в ОЗУ и обслуживал их из ОЗУ по запросу?

Обновление: mod_mem_cache в Руководство по кэшированию Apache , похоже, то, что я ищу. Любая эквивалентная вещь в IIS?

Спасибо.

Ответы [ 7 ]

3 голосов
/ 03 апреля 2009

Даже если IIS на самом деле не настроен на самостоятельное выполнение кэширования, для настоящих статических файлов, которые загружаются только с диска и отправляются по проводам (например, images, .css, .js), вы, скорее всего, прекратите использование файлового кэша в памяти, встроенного в саму Windows. В диспетчере задач вы увидите метрику «Системный кэш» в разделе «Физическая память»; это показывает вам, сколько места ОС использует для кеша. Поэтому, пока вы говорите настоящие статические файлы, добавление явного кэширования не требуется.

Edit:
Для более подробной информации, вот пара ссылок о кеше Windows (вы, вероятно, могли бы найти больше с Google):

2 голосов
/ 03 апреля 2009

Вот немного о файловом кэше IIS 6.0: http://www.microsoft.com/technet/prodtechnol/WindowsServer2003/Library/IIS/a0483502-c6da-486a-917a-586c463b7ed6.mspx?mfr=true. Как упоминал Дэвид, IIS, вероятно, уже делает это для вас.

Кэширование вывода IIS 7.0

Поведение кэша файлов IIS 6.0 включено в кэширование вывода IIS 7.0. Вы можете определить свои собственные правила , если время ожидания по умолчанию кажется слишком коротким. Кеширование ядра использует преимущества кэширования ОС.

2 голосов
/ 03 апреля 2009

IIS уже должен делать это. В .Net это то, что может сделать для вас кэширование вывода.

1 голос
/ 03 апреля 2009

в ASP.NET:

Response.Cache.SetExpires(DateTime.Now.AddDays(1));
Response.Cache.SetCacheability(HttpCacheability.Public);
Response.Cache.SetValidUntilExpires(true);

Это означает, что не ASP-решение является лучшим, а скорее то, что IIS подчиняется директивам кэширования, которые могут кэшироваться в ОЗУ.

Однако я полагаю, что вы можете дать IIS сигнал кэшировать один файл в оснастке управления IIS, если ASP / ASP.NET не поддерживается, установив срок действия контента 1 или более дней в будущем.

1 голос
/ 03 апреля 2009

По словам Нейта Бросса, это, вероятно, самый надежный способ сохранить их в оперативной памяти, предполагая, что диск RAM динамически создается из реального диска где-то при загрузке.

Дополнительно , вы можете настроить обработчик asp.net (* .ashx) для файлов, чтобы использовать кэш, встроенный в ASP.Net. Сначала он будет пытаться обслуживать из кэша и загружать их только при необходимости. Преимущество этого состоит в том, что вы можете время от времени легко завершать кэш, если файл может время от времени изменяться, и IIS может повторно запросить эту память, если решит, что в данный момент она ему нужна для чего-то другого.

1 голос
/ 03 апреля 2009

Настройка RAM-диска, если у вас много RAM

http://www.tweakxp.com/article37232.aspx ссылки на бесплатную. Попросите ваше приложение скопировать соответствующие файлы на этот диск и установите ваш wwwroot, чтобы он указывал на это место.

Эти данные между ботинками небезопасны.

Также я управляю большим сайтом IIS и обслуживаю тонны статических файлов. Кэш файлов Windows в порядке, и у меня больше проблем с задержкой в ​​сети. Время до первого байта e.t.c. Мои диски никогда не связаны. Но оперативный диск поможет, если у вас есть известная проблема.

0 голосов
/ 03 апреля 2009

Возможно, вы сможете настроить оперативную память, а затем переместить туда свои файлы и настроить там виртуальный каталог IIS.

...