inclusioni

  • Creatore Discussione Creatore Discussione Beppe2
  • Data di inizio Data di inizio

Beppe2

Nuovo Utente
29 Lug 2018
14
0
1
Includere file esterni con JS quali problemi può dare alla cache e come risolverli? Basta un metatag?
Grazie
 
Ad esempio;
se io avessi una pagina con il footer in un file esterno in JS e un utente oggi la visita un paio di volte, e io domani modifico il footer nel JS, lo stesso utente passato domani rivisita la stessa pagina, nel ricaricare il footer prevale il contenuto nuovo del file JS o quello della cache che l'utente ha nel suo browser?

Insomma la cache dell'utente influisce sul file js che si ricarica nel visitare la pagina?
Io penso di no! Ma se è si! Quale soluzione adottare?
 
Io penso di no! Ma se è si! Quale soluzione adottare?
Pensi male :D
La cache ( in inglese: nascondiglio, e questo già la dice lunga ) è stata inventata proprio per quello, in origine con le connessioni in dialup, lente e insicure serviva per velocizzare la visualizzazione di pagine di siti già visitati.
Questo andava bene per i siti statici, ciè che cambiavano pochissimo nel tempo o mai.
Oggi ha un senso proprio per quelle parti di pagina che non cambiano mai, come il layout, mentre il contenuto è scaricato dinamicamente, quindi passa per la cache per un tempo limitato dato che sarà il server a generare i nuovi cntenuti richiesti dalla pagina.
Quindi, c'è nua strada maestra per non imbarcarsi nella generazione dei contenuti dinamici, cosa che se ho compreso non riguarda te; l'usi dei query string nei file inclusi.
I motori dei browser controllano che non ci siano variazioni nelle pagine scaricate, ma non si curano dei file allegati, perché li vedono sempre con lo stesso nome ( capito mi hai? ;) ) e quindi pensano che siano sempre gli stessi che hanno già in cache e non li scaricano.
Il modo semplice per forzarne lo scarico è aggiungere un query string fittizio dopo il nome del file, ad esempio:
HTML:
Sì, tutti quegli elementi che caricano un file dinamicamente, anche quelli per le immagini, i form e quant'altro.
<link rel="stylesheet" href="foglio_stile.css?v=1">
<img src="immagine.png?v=2"> 
<script src="file.js?v=3"></script>
Ovviamente questo non modifica il contenuto del file, ma forza solo il suo "riscarico" nella cache da parte del browser, e quindi la sua visualizzazione.
Un ultima considerazione, puoi usare anche i metatag relativi al no-cache, ma ti dico subito che funzionavano male sui vecchi Internet Explorer, mentre dalla versione 10 in poi è cambiato il modo ( anzi mi pare, che non c'è modo ). Mentre per Safari, Firefox e Chrome, proprio non vanno, dando risultati poco o nulla affidabili.
Spero di averti aiutato.
Riferimenti ( in inglese ): https://stackoverflow.com/questions...s-to-turn-off-caching-in-all-browsers#1341133