IIS7 Web.Config Caching - в чем здесь различие и как все это получается вместе? - PullRequest
10 голосов
/ 30 января 2011

В IIS7 у меня есть возможность устанавливать параметры кэширования. Эти опции добавляются в мой web.config как таковой ...

    <caching maxCacheSize="262144">
        <profiles>
            <add extension=".png" policy="CacheUntilChange" kernelCachePolicy="CacheUntilChange" duration="00:00:30" />
            <add extension=".jpeg" policy="CacheUntilChange" kernelCachePolicy="CacheUntilChange" duration="00:00:30" />
            <add extension=".jpg" policy="CacheUntilChange" kernelCachePolicy="CacheUntilChange" duration="00:00:30" />
            <add extension=".css" policy="CacheUntilChange" kernelCachePolicy="CacheUntilChange" duration="00:00:30" />
            <add extension=".js" policy="CacheUntilChange" kernelCachePolicy="CacheUntilChange" duration="00:00:30" />
        </profiles>
    </caching>

Однако у меня также есть следующее для "кэширования"

    <staticContent>
        <clientCache cacheControlMode="UseMaxAge" cacheControlMaxAge="90.00:00:00" />
        <remove fileExtension=".js" />
        <mimeMap fileExtension=".js" mimeType="text/javascript" />
    </staticContent>

В чем различия между этими двумя конфигами? Они оба вложены в тег <system.webServer>, поэтому они действительны для IIS7.

Кроме того, каков правильный подход при их использовании? Я в настоящее время только использую это моя папка статических активов. Я не использую это кэширование ни для чего другого.

Заранее спасибо.

Ответы [ 2 ]

4 голосов
/ 24 сентября 2013

Основным отличием является то, что

  • первый - для кэширования на стороне сервера динамического вывода, такого как aspx-страницы (в основном, вывод страницы в памяти для последующих запросов).Как указывает ответ @ artem-vertiy, использование его для статического контента не имеет смысла.

  • второй - «интернет-сторона»: он реализуется путем написания стандартных заголовков ответа, онсообщает как клиентским браузерам, так и публичным прокси, как управлять кэшированными файлами.

1 голос
/ 23 августа 2016

Я заметил, что люди часто путают вещи, описанные выше, и пишут статьи, где рекомендуют вещи, как в первом блоке, то есть кэширование вывода для статических ресурсов

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

Кэширование вывода не требуется для статических файлов, таких как HTML, JPG или GIF-файлы, и может привести к увеличению объема памяти для динамического ASP.NET или PHP страницы, которые читают из базы данных, которая часто меняется

Таким образом

<add extension=".png" ../>
<add extension=".jpeg" ../>
etc.

бесполезен, по крайней мере, если у вас нет обработчика ashx http для .png или .jpeg и т. Д.

...