it-swarm.it

Come impedire la memorizzazione nella cache del mio file Javascript?

Ho un semplice HTML:

<html>
<body>
<head>
<meta charset="utf-8">
<meta http-equiv='cache-control' content='no-cache'>
<meta http-equiv='expires' content='0'>
<meta http-equiv='pragma' content='no-cache'>
<script src="test.js"></script>
</body>
</html>

In test.js ho cambiato una funzione Javascript, ma il mio browser memorizza nella cache questo file. Come disabilitare la cache per script src?

102
Bdfy

Aggiungi una stringa di query casuale a src

Puoi farlo manualmente aumentando la stringa di query ogni volta che apporti una modifica:

<script src="test.js?version=1"></script>

O se si utilizza una lingua lato server, è possibile generare automaticamente questo:

ASP.NET:

<script src="test.js?rndstr=<%= getRandomStr() %>"></script>

Ulteriori informazioni sul busting della cache sono disponibili qui:

https://curtistimson.co.uk/post/front-end-dev/what-is-cache-busting/

151
Curt
<script src="test.js?random=<?php echo uniqid(); ?>"></script>

EDIT: Oppure potresti usare il tempo di modifica del file in modo che sia memorizzato nella cache sul client.

<script src="test.js?random=<?php echo filemtime('test.js'); ?>"></script>
29
Alex Pliutau

Configura il tuo server web per inviare le intestazioni HTTP del controllo di memorizzazione nella cache per lo script.

Intestazioni false nei documenti HTML:

  1. Non sono supportati tanto quanto le intestazioni HTTP reali
  2. Applicare al documento HTML, non alle risorse a cui è collegato
12
Quentin

Puoi aggiungere una queryString al tuo src e cambiarlo solo quando rilascerai una versione aggiornata:

<script src="test.js?v=1"></script>

In questo modo il browser utilizzerà la versione cache fino a quando non verrà specificata una nuova versione (v = 2, v = 3 ...)

11
daveoncode

Puoi aggiungere una stringa casuale (o datetime) come stringa di query all'URL che punta al tuo script. Così:

<script type="text/javascript" src="test.js?q=123"></script> 

Ogni volta che aggiorni la pagina devi assicurarti che il valore di 'q' sia cambiato.

6
Bas Slagter