0

Я разрабатываю одностраничное приложение ASP MVC с Visual Studio 2012. Он использует компоненты, созданные из статического JS/CSS/HTML файлов и загружаемых на нужды. Этот подход отлично работает, даже не требуя связывания в производстве, поскольку статика кэшируется браузером, но в dev существует проблема, так как кэш должен быть отключен для обновления файлов, над которыми я работаю в настоящий момент, а это означает около 100 небольшие статические файлы загружаются с обновлением каждой страницы, занимая около 40 секунд.Asp Mvc development, выборочно отключить кеш только для файлов JS/CSS/HTML, я в настоящее время работаю над

В настоящее время я просматриваю рабочие области Chrome, но я считаю, что более универсальным жизнеспособным решением является специально отключить кеш для файлов с датой изменения в течение последних 30 минут.

Я ищу альтернативные решения или существующий компонент для отключения кеша для недавно измененных файлов в VS/ASP (пользовательский обработчик HTTP?).

ответ

0

Предполагая, что вы используете IIS или IIS Express, самым простым решением является просто отключить кеширование полностью в вашей среде разработки, добавив настройки в ваш файл web.config.

ПРИМЕЧАНИЕ: Если у вас нет web.config файла, вы можете создать в корневом каталоге вашего сайта.

<configuration> 
    <system.webServer> 
    <httpProtocol> 
     <customHeaders> 
     <add name="Cache-Control" value="no-cache" /> 
     </customHeaders> 
    </httpProtocol> 
    </system.webServer> 
</configuration> 

Кроме того, вы можете отключить кэширование файлов в определенном месте вашего сайта:

<configuration> 
    <location path="path/to/the/file"> 
    <system.webServer> 
     <staticContent> 
     <clientCache cacheControlMode="DisableCache" /> 
     </staticContent> 
    </system.webServer> 
    </location> 
</configuration> 

В любом случае, вы можете использовать web config transformation во время вашего освобождения для того, чтобы удалить эти разделы в вашей тестовой/производственной среды.

<?xml version="1.0" encoding="utf-8"?> 

<!-- For more information on using web.config transformation visit http://go.microsoft.com/fwlink/?LinkId=125889 --> 

<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform"> 
    <!-- Use this section if you are disabling caching site-wide --> 
    <system.webServer> 
     <httpProtocol> 
      <customHeaders> 
       <add name="Cache-Control" value="no-cache" xdt:Transform="Remove" xdt:Locator="Match(name)" /> 
      </customHeaders> 
     </httpProtocol> 
    </system.webServer> 

    <!-- Use this section if you are disabling per folder (duplicate if necessary) --> 
    <location path="path/to/the/file" xdt:Transform="Remove" xdt:Locator="Match(path)"> 
     <system.webServer> 
      <staticContent> 
       <clientCache cacheControlMode="DisableCache" /> 
      </staticContent> 
     </system.webServer> 
    </location> 
</configuration> 

Ссылка: How do I disable caching of an individual file in IIS 7 using weserver config settings

+0

Мы уже пробовали это, и это снимает часть проблемы, но только для 3-й партии LIBS, которые находятся в отдельной папке. С компонентами он все еще «все или все», если вы закрываете всю свою папку или не должны помнить о переключении пути к компоненту, над которым вы сейчас работаете, также не идеальны. –

+0

Для некоторых вариантов вы можете проверить ответы на [этот вопрос] (http://stackoverflow.com/q/5690269/181087). – NightOwl888

+0

Я видел это, но, предлагаемые решения - это «все или ничего», а не то, что я ищу. –