Я пытаюсь разобраться с кешированием в IIS для своего сайта.
В принципе, я не хочу ничего кэшировать, кроме файлов .png, .js и .css.
На уровне своего сайта я открыл заголовки ответа HTTP и использовал «Установить общие хедеры ...», чтобы установить срок действия содержимого немедленно.
У меня нет профилей кэширования вывода, установленных на каком-либо уровне в IIS.
Я очищаю кеш браузера и пытаюсь зайти на свой сайт. Когда мой сайт запрашивает файл PNG, я получаю такие ответы, как:
Accept-Ranges bytes
Age 0
Connection Keep-Alive
Content-Type image/png
Date Thu, 12 Apr 2012 21:55:15 GMT
Etag "83b7322de318cd1:0"
Last-Modified Thu, 12 Apr 2012 19:33:45 GMT
Server Microsoft-IIS/7.5
X-Powered-By ASP.NET
Для файлов JS и CSS я вижу такие ответы:
Accept-Ranges bytes
Cache-Control no-cache
Connection Keep-Alive
Content-Encoding gzip
Content-Length 597
Content-Type text/css
Date Thu, 12 Apr 2012 21:55:15 GMT
Etag "06e45ede15bca1:0"
Last-Modified Mon, 02 Nov 2009 17:28:44 GMT
Server Microsoft-IIS/7.5
Vary Accept-Encoding
X-Powered-By ASP.NET
Accept-Ranges bytes
Cache-Control no-cache
Connection Keep-Alive
Content-Encoding gzip
Content-Length 42060
Content-Type application/x-javascript
Date Thu, 12 Apr 2012 21:55:14 GMT
Etag "2356302de318cd1:0"
Last-Modified Thu, 12 Apr 2012 19:33:45 GMT
Server Microsoft-IIS/7.5
Vary Accept-Encoding
X-Powered-By ASP.NET
Итак, почему мои PNG можно кэшировать, а файлы JS и CSS - нет?
Затем я перехожу к функции кэширования вывода в IIS и настраиваю профили для файлов .png, .css и .js. Это обновит файл web.config следующим образом:
<caching>
<profiles>
<add extension=".png" policy="CacheUntilChange" kernelCachePolicy="DontCache" />
<add extension=".css" policy="CacheUntilChange" kernelCachePolicy="DontCache" />
<add extension=".js" policy="CacheUntilChange" kernelCachePolicy="DontCache" />
</profiles>
</caching>
Я выполняю «предупредительный» IISReset и снова пытаюсь зайти на свой сайт.
Для файлов PNG я вижу следующий ответ:
Accept-Ranges bytes
Age 0
Connection Keep-Alive
Content-Length 3833
Content-Type image/png
Date Thu, 12 Apr 2012 22:02:30 GMT
Etag "0548c9e2c5dc81:0"
Last-Modified Tue, 22 Jan 2008 19:26:00 GMT
Server Microsoft-IIS/7.5
X-Powered-By ASP.NET
Для файлов CSS и JS я вижу следующие ответы:
Accept-Ranges bytes
Cache-Control no-cache,no-cache
Connection Keep-Alive
Content-Encoding gzip
Content-Length 2680
Content-Type application/x-javascript
Date Thu, 12 Apr 2012 22:02:29 GMT
Etag "0f743af9015c81:0"
Last-Modified Tue, 23 Oct 2007 16:20:54 GMT
Server Microsoft-IIS/7.5
Vary Accept-Encoding
X-Powered-By ASP.NET
Accept-Ranges bytes
Cache-Control no-cache,no-cache
Connection Keep-Alive
Content-Encoding gzip
Content-Length 3831
Content-Type text/css
Date Thu, 12 Apr 2012 22:02:29 GMT
Etag "c3f42d2de318cd1:0"
Last-Modified Thu, 12 Apr 2012 19:33:45 GMT
Server Microsoft-IIS/7.5
Vary Accept-Encoding
X-Powered-By ASP.NET
Что я делаю не так? Полностью ли я понял особенности IIS или есть ошибка?
Самое главное, как мне достичь того, чего я хочу, - заставить браузер кэшировать только файлы PNG, JS и CSS?