Come faccio a disattivare la memorizzazione nella cache di un singolo file in IIS 7 utilizzando weserver impostazioni di configurazione

C’è un modo per diable la memorizzazione nella cache di un singolo file javascript nella mia ASP.NET applicazione, senza disattivare la memorizzazione nella cache di qualsiasi altro file nell’applicazione?

È in esecuzione in IIS 7 in Azure, quindi mi sembra che le mie uniche opzioni per controllare questa sono all’interno del webserver tag.

Io attualmente uso il folowwing config, ma questa è la disabilitazione della cache su tutti i file.

     <modules runAllManagedModulesForAllRequests="true"/>

    <staticContent>
      <clientCache cacheControlMode="DisableCache"/>
    </staticContent>

  </system.webServer>

Voglio solo disabilitare la cache di un singolo file javascript che cambia spesso.

È possibile?

  • Sì, è possibile, si può fare nel vostro configurtion file: avvolgere il <staticContent> in <location>, (vedi il mio post qui sotto)
InformationsquelleAutor Dean | 2010-10-14

 

6 Replies
  1. 44

    Ho appena imbattuto in questa domanda; è possibile usare la seguente procedura per disattivare la cache su un file specifico:

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

    (Si noti che il percorso è relativo al web.file di configurazione)

    In alternativa, posizionare un singolo file in una directory su di essa la propria, e di dare a quella directory è proprio il web.config che disabilita la cache per tutto quanto in esso

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

    [Sia testato su IIS7.5 su Windows 7, ma dovrai confermare che funziona bene su Azure]

    • Ho fatto la prima alternativa, e funziona su Azure.
    • Funziona perfettamente per il contesto statico pubblicato un Azure Web App attraverso il controllo del codice sorgente o di integrazione continua. Nel mio caso Angolare CLI costruito app in cui la produzione di build si prende cura della creazione di cache sballare i nomi per i file contenuti nel pacchetto e tutto quello che voglio no-cache ” è l’index.html. Grazie!
    • Puoi spiegare perché il secondo approccio di posizionamento di un sito Web.config in una directory che utilizza un approccio completamente diverso? Qual è la differenza tra clientCache e Cache-Control= “no-cache”?
    • Non c’è nessuna rima o ragione per la scelta di diversi meccanismi. In effetti non avevo notato che ho avuto fino ad appena alzato! Sto cercando di indovinare sia il meccanismo di lavoro.
  2. 8

    Si sta andando a voler guardare il Sistema.WebServer/Cache classe, in cui è possibile applicare una cache profilo di particolari estensioni. In questo modo almeno consentono di controllare per tutti i file Javascript che termina con l’ .js.

    <system.webServer>
    ...
    
       <caching>
          <add extension=".js" policy="DontCache" kernelCachePolicy="DontCache" />
       </caching>
    
    </system.webServer>

    Che dovrebbe disattivare .js memorizzazione nella cache di processo e di memorizzazione nella cache del kernel dal cloud.

    Ho pensare è possibile creare questo sito web.config nella cartella che contiene il file e sarà disattivare la memorizzazione nella cache per .js solo che a livello di cartella. Io onestamente non l’ho provato anche io, quindi, solo un suggerimento, si potrebbe verificare.


    Al di là di questo, date un’occhiata alla documentazione di IIS riguarda la cache di config:

    /Cache: http://www.iis.net/ConfigReference/system.webServer/caching

    /Cache/Profili: http://www.iis.net/ConfigReference/system.webServer/caching/profiles

    /Cache/Profili/Aggiungere: http://www.iis.net/ConfigReference/system.webServer/caching/profiles/add

    Speriamo che, oltre a qualche ricerca su quelle config tag sarà di aiuto.

    Se non, ti consiglio di guardare in attuazione di un Modulo HTTP personalizzato che è possibile inserire la richiesta IIS tubo, che può filtrare la memorizzazione nella cache di controllo fino a quel particolare file

    ** per che cosa vale la pena questo è solo IIS comportamento e non sarà diverso o di Azure, quindi si può facilmente testare questo locale senza preoccuparsi di tessuto Dev o Azure test.

    • Questa risposta è mancante <profili> tag per la config. Vedere “Cosa Sarebbe Cool”s risposta per il formato corretto.
    • Inoltre, vorrei sottolineare, ‘politica=”DontCache”‘ non ha funzionato per me, ma ‘politica=”DisableCache”: “non lavorare.
  3. 8

    Sembra la risposta è mancante “profili” tag

    <caching>
      <profiles>
        <add extension=".js" kernelCachePolicy="DontCache" policy="DontCache"/>
      </profiles>
    </caching>
    • Solo ripetendo qui, politica=”DontCache”‘ non ha funzionato per me, ma ‘politica=”DisableCache”: “non lavorare.
    • DontCache fatto fare il trucco per me
  4. 3

    È possibile disattivare la memorizzazione nella cache di output a livello di cartelle da rimuovere un’estensione a livello di cartelle includendo web.config nella cartella come questa

    <?xml version="1.0" encoding="UTF-8"?>
    <configuration>
      <system.webServer>
            <caching>
                <profiles>
                    <remove extension=".js" />
                </profiles>
            </caching>
    
      </system.webServer>
    </configuration>

    ora questa cartella non sono uscita abilitata la cache per i file che terminano con .js

  5. 1

    Aprire il pannello di IIS.

    Aprire la relativa applicazione da siti, quindi passare alla cartella contenente il file.

    Ora nel pannello a destra, passare alla visualizzazione del contenuto di una

    Selezionare il file desiderato

    Ora fate clic destro sul file, scegliere “Passa alla Visualizzazione Funzionalità”.

    Da lì scegliere le Intestazioni di Risposta HTTP, fare clic su “Aggiungi” per aggiungere la nuova intestazione, Aggiungere “Cache-Control” intestazione “no-cache” valore.

  6. 0

    Sì, è possibile, si può fare nel file di configurazione:

    (Vedere https://stackoverflow.com/a/4821328/2247494)

    <configuration>
        <location path="cache.manifest">
          <system.webServer>
            <staticContent>
              <clientCache cacheControlMode="DisableCache" />
            </staticContent>
          </system.webServer>
        </location>
    </configuration>

Lascia un commento