2015-04-29 1 views
11

Я занимаюсь разработкой веб-приложений для работы и самым большим ударом для своей производительности является IIS. Он кэширует файлы, которые не будут обновляться, даже если они будут изменены, если я не перезапущу IIS. В частности, я имею в виду файлы html, js и css. Эта проблема заставляет меня постоянно останавливать и запускать мое веб-приложение. Поскольку у меня Windows 7, я считаю, что у меня ISS 7.5. Я использую IIS Express. Это так расстраивает, что я бы предпочел, чтобы IIS никогда ничего не кешировал. Я в порядке с решением, которое останавливает все формы кеширования или только для проекта, над которым я работаю.Как остановить IIS от кеширования любых файлов, когда-либо, при любых обстоятельствах?

Менеджер IIS недоступен для меня. Он не находится в разделе «Система и безопасность» -> «Администрирование» -> Диспетчер IIS, например, предлагается https://technet.microsoft.com/en-us/library/cc770472%28v=ws.10%29.aspx. Кроме того, поиск inetmgr в поле «Начать поиск» не дает мне никаких результатов. Из-за этого я ищу исправление для файла applicationhost.config IIS.

Я попытался положить следующий в моем ApplicationHost.config, который не работает:

<location path="ProjectName"> 
    <system.webServer> 
     <staticContent> 
      <clientCache cacheControlCustom="public" cacheControlMode="DisableCache" /> 
     </staticContent> 
     <caching enabled="false" enableKernelCache="false"></caching> 
    </system.webServer> 
</location> 

Ближайший вопрос о StackOverflow к моей проблеме был IIS cached files never replaced. Тем не менее, Fiddler показывает мне, что старые файлы отправляются в браузер даже после того, как они были изменены.

Как IIS может отправить мой браузер обновленным файлам без перезапуска?

ответ

-3

Достаточно, возможно, это браузер, который является виновником. Вы пробовали ctrl + F5?

+0

браузеры не являются проблемой и их разработчикам следует включить возможность отключения кэширования на перечисленных сайтах. Однако по большей части браузеры будут делать то, что сервер сообщает им, что означает конфигурацию сервера ... пока разработчики браузера не вытащит свои пальцы. – m12lrpv

7

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

Эта страница дает больше информации, http://www.iis.net/learn/manage/managing-performance-settings/walkthrough-iis-output-caching

Если вы используете IIS Express, то вполне вероятно, что кэширование устанавливается на уровне приложения в вашем web.config, или на отдельных страницах.

Вы должны установить

<caching> 
    <outputCache enableOutputCache="false" /> 
</caching> 

или если его IIS 7+ (что IIS Express будет)

<system.webServer> 
    <caching enabled="false" /> 
</system.webServer> 
1

Если кто-то натыкается на это и хочет "мыши" способ отключения кеш в IIS 7 или около того ... вот ответ от форумов IIS на https://forums.iis.net/t/959070.aspx:

Это обновление для IIS 7.5 (в W 7). Отключение кеша - это хорошая вещь, которую нужно сделать во время разработки, когда вы не заинтересованы в производительности и хотите, чтобы изменения происходили немедленно. Он ускоряет процесс разработки до . - Запустите диспетчер IIS (введите IIS в поисковые программы и файлы в меню «Пуск») - Перейдите к нужному сайту в дереве подключений (веб-сайт по умолчанию) - Открытое кэширование вывода - Редактировать настройки параметров - Снимите флажок Включить кеш и включить ядро кэш

Вы получаете настройки в файле web.config что-то вроде этого:

<caching enabled="false" enableKernelCache="false"> 
      <profiles> 
       <add extension=".css" policy="DontCache" kernelCachePolicy="DontCache" /> 
       <add extension=".script" policy="DontCache" kernelCachePolicy="DontCache" /> 
      </profiles> 
     </caching> 

Таким образом, нет тегов здесь ..