0

Ich entwickle eine ASP MVC Single Page Application mit Visual Studio 2012. Es verwendet Komponenten aus statischen JS/CSS/HTML Dateien und geladen nach Bedarf. Der Ansatz funktioniert gut, ohne dass eine Bündelung in der Produktion erforderlich ist, da die Statik vom Browser zwischengespeichert wird, aber es gibt ein Problem in dev, da der Cache deaktiviert werden muss, um die Dateien zu aktualisieren, an denen ich gerade arbeite, und das sind etwa 100 Kleine statische Dateien werden mit jeder Seitenaktualisierung geladen, die ungefähr 40 Sekunden dauert.Asp Mvc Entwicklung, selektiv deaktivieren Cache nur für JS/CSS/HTML-Dateien Ich arbeite derzeit an

Ich schaue derzeit in Chrome Workspaces, aber ich denke, dass eine universell praktikable Lösung ist, Cache speziell für Dateien mit Änderungsdatum innerhalb der letzten 30 Minuten zu deaktivieren.

Ich suche nach alternativen Lösungen oder einer vorhandenen Komponente, um den Cache für kürzlich geänderte Dateien in VS/ASP (eine benutzerdefinierte HTTP-Handler?) Zu deaktivieren.

Antwort

0

Angenommen, Sie verwenden IIS oder IIS Express, besteht die einfachste Lösung darin, das Caching vollständig in Ihrer Entwicklungsumgebung zu deaktivieren, indem Sie der Datei web.config Einstellungen hinzufügen.

HINWEIS: Wenn Sie keine web.config-Datei haben, können Sie in Ihrer Website Root-Verzeichnis erstellen.

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

Alternativ können Sie das Caching von Dateien in einem bestimmten Verzeichnis Ihrer Website deaktivieren:

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

In jedem Fall Sie web config transformation während Ihrer Veröffentlichung, um diese Abschnitte entfernen können in Ihre Test-/Produktionsumgebungen.

<?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> 

Referenz: How do I disable caching of an individual file in IIS 7 using weserver config settings

+0

Wir haben dies bereits versucht, und es ist Teil des Problems mildert, aber nur für 3rd-Party-Libs, die in einem separaten Ordner befinden. Bei Komponenten ist es immer noch "alles oder nichts", wenn Sie den gesamten Ordner abdecken oder daran denken, den Pfad zu der Komponente zu wechseln, an der Sie gerade arbeiten - auch nicht ideal. –

+0

Sie können die Antworten auf [diese Frage] (http://stackoverflow.com/q/5690269/181087) für einige Optionen überprüfen. – NightOwl888

+0

Ich habe das gesehen, aber, afaics, vorgeschlagene Lösungen sind "alles oder nichts" Ansatz, nicht das, was ich suche. –