Ricarica il sito quando viene raggiunto tramite il pulsante Indietro del browser

Problema: ho un sito con contenuto dinamico che deve essere ricaricato ogni volta che l’utente lo vede. Ciò include il caso d’uso quando un utente preme il pulsante Indietro su un altro sito e arriva al sito che deve essere ricaricato. La maggior parte dei browser (tutti?) Non aggiornano il sito dopo questo evento.

La mia soluzione (che non funziona del tutto): http://www.hunlock.com/blogs/Mastering_The_Back_Button_With_Javascript

window.onbeforeunload = function () { // This function does nothing. It won't spawn a confirmation dialog // But it will ensure that the page is not cached by the browser. } 

Ma ancora non aggiorna la pagina.

Qualche idea su cosa può influenzare / bloccare il comportamento desiderato? Rispettivamente ogni altro suggerimento di soluzione per questo problema?

modificare:

Imposta seguente:

 Cache-Control private, must-revalidate, max-age=0 Expires Sat, 26 Jul 1997 05:00:00 GMT Pragma no-cache 

e:

    

ancora nessun successo.

Dovresti utilizzare un input nascosto come indicatore di aggiornamento, con un valore di “no”:

  

Ora usando jQuery, puoi controllarne il valore:

 $(document).ready(function(e) { var $input = $('#refresh'); $input.val() == 'yes' ? location.reload(true) : $input.val('yes'); }); 

Quando fai clic sul pulsante Indietro, i valori nei campi nascosti mantengono lo stesso valore di quando hai lasciato la pagina originariamente.

Quindi, la prima volta che carichi la pagina, il valore dell’input sarà “no”. Quando ritorni alla pagina, sarà “sì” e il tuo codice JavaScript attiverà un aggiornamento.

Dopo aver provato varie soluzioni diverse, ho trovato che l’API JavaScript Navigation Timing funziona meglio per rilevare le interazioni con il pulsante Indietro.

Tutto ciò che devi fare è questo:

 if(!!window.performance && window.performance.navigation.type == 2) { window.location.reload(); } 

E funziona bene con tutti i principali browser: http://caniuse.com/#search=Navigation%20Timing%20API

La mia pagina viene caricata dalla cache del browser?

questo ha funzionato per me, in drupal 7 (php) ogni volta che un utente si disconnette, può premere il pulsante Indietro e in grado di visitare le pagine privilegiate. Se una pagina viene aggiornata, viene indirizzata a una prima pagina in cui non può fare nulla.

   '; } ?> 

qualcuno ha postato qui : grazie spero che ti aiuti anche tu.

È ansible utilizzare l’evento window.onpageshow per verificare se la pagina proviene dalla cache.

 window.onpageshow = function (event) { if (event.persisted) { window.location.reload(); //reload page if it has been loaded from cache } }; 

Nota che questo richiede browser più moderni di alcune delle risposte precedenti (come IE11 +). Per maggiori informazioni sul supporto del browser, vedere qui

Aiuta?

Ricarica la pagina premendo il tasto indietro

O con i meta tag,

       

Non sono sicuro, il meta ti aiuterà, ma puoi testarlo.

Penso che sia necessario ricaricare esattamente – window.location.reload() . Ma il problema principale è la soluzione semplice cross browser. Codice su PHP:

 $inline_javascript = 'var uniqueString = ' . time() . ';' . 'if (uniqueString === window.name) {' . ' window.location.relace();' . '} else {' . ' window.name = uniqueString;' . '}'; 

E stampalo prima dei file css e js nel.

Ho trovato una soluzione: aggiungi no-store all’intestazione Cache-Control . L’ho fatto nelle intestazioni http, ma immagino che potrebbe funzionare anche con i meta tag. Testato su Chromium e Firefox.

Vedi anche Come fermare chrome dalla cache

Prova questo :

 header("Cache-Control: no-store, must-revalidate, max-age=0"); header("Pragma: no-cache"); header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); 

// Una data nel passato

Potresti usare questo codice in un modulo personalizzato:

  

Penso che questa domanda ti aiuterà.

[modifica (Nickolay): ecco perché funziona in questo modo: webkit.org, developer.mozilla.org. Si prega di leggere questi articoli (o il mio sumrio in una risposta separata di seguito) e considerare se è davvero necessario farlo e rendere la pagina più lenta per i propri utenti.]

La risposta di Nickolay