PDA

View Full Version : IIS web.config cache


17Qwerty71
03-05-2017, 09:32
Buongiorno,
ho un applicazione angularjs e vorrei far in modo che il server invia i file html e js ogni volta che questi sono modificati.
Attualmente ho inserito nella root del dominio un file web.config con questa struttura:


<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<caching>
<profiles>
<add extension=".js" policy="CacheForTimePeriod" kernelCachePolicy="CacheForTimePeriod" duration="01:00:00" />
<add extension=".html" policy="CacheForTimePeriod" kernelCachePolicy="CacheForTimePeriod" duration="01:00:00" />
</profiles>
</caching>
</system.webServer>
</configuration>


Come posso impostare il file per fare questo?

Grazie mille!

tomminno
03-05-2017, 13:57
Chiarisci meglio quello che intendi fare perchè secondo il paradigma client-server, è il client ad aprire la connessione verso il server e a richiedere i dati, non è il server ad inviarli in autonomia (per questo è stato aggiunto WebSocket per supportare le comunicazioni bidirezionali, ma è un altro discorso).

Ci sono 2 tipi di caching: lato client comandata lato server tramite Cache-Control e ETag e la cache lato server dove è il server web a tenere in memoria il contenuto e a rispedirlo al cliente senza andarlo a rileggere da file.

IIS fa caching automatico dei contenuti statici come html e js, le configurazioni che hai impostato servono per pagine dinamiche tipo aspx o php.

Per fare quello che chiedi potresti usare il Cache-Control a nocache sul browser e affidarti a ETag in modo che il web server risponda con un 304 finchè il file non viene modificato, oppure potresti usare anche un valore per il Cache-Control evitando per un certo periodo di tempo che il browser richieda nuovamente quella stessa risorsa, chiaramente in questo caso finchè non scade la cache locale del browser non vedrà il contenuto aggiornato.
Devi tarare te i parametri in base alle esigenze della tua applicazione.