Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 15
  1. #1

    Problema cache sito web

    Buongiorno programmatori,
    ho un sito web con pagine html, css , javascript con forte uso di jquery e Php con diversi scambi tra client e server.
    Il mio problema è che ogni volta che faccio modifiche (spesso al codice Php) gli utenti chiamano lamantando problemi che in realtà sono stati risolti e puntualmente devo dire di cancellare la Cache di chrome e quando rifanno l' accesso i problemi si risolvono;
    Come posso fare ad automatizzare questo processo di svuotamento Cache dei miei clienti ogni volta che faccio delle modifiche al mio sito?

  2. #2
    La cache la puoi svuotare tranquillamente con codice php ma questo avviene ogni volta che l'utente apre la pagina e non solo quando tu fai modifiche
    “Che le cose siano cosi, non vuol dire che debbano andare così. Solo che quando si tratta di rimboccarsi le maniche e incominciare a cambiare, vi è un prezzo da pagare. Ed è allora che la stragrande maggioranza preferisce lamentarsi più che fare”.

    Giovanni Falcone

  3. #3
    Amministratore L'avatar di Vincent.Zeno
    Registrato dal
    May 2003
    residenza
    Emilia-Romagna (tortellini und cappelletti land!)
    Messaggi
    19,931
    specifichiamo anche che:
    le intestazione nocache devono essere tra le prime istruzioni dei file dinamici (nel caso specifico quelli php).
    le modifiche ai file css e js non verranno servite se i file sono nella cache del client, per forzarne l'aggiornamento si usa mettere un valore arbitrario in querystring che andrà modificato in caso di modifiche dei file in questione. es "style.css?v=1" dove 1 va modificato in caso di modifiche al file

  4. #4
    Ad esempio nel mio sito sul server ho questa pagina lavascript che controlla quale dispositivo sto usando e a seconda del dispositivo carico il file .css appropriato, ti lascio una parte di codice di esempio:

    codice:
     if (navigator.userAgent.match(/iPhone/i) || navigator.userAgent.match(/iPod/i)) {
                console.log("iPhone");
                var cssId = 'iPhone'; // you could encode the css path itself to generate id..
                if (!document.getElementById(cssId)) {
    
    
                    var link1 = document.createElement('link');
                    var head = document.getElementsByTagName('head')[0];
                    link1.id = cssId;
                    link1.rel = 'stylesheet';
                    link1.type = 'text/css';
                    link1.href = 'assets/js/dynamicLayout/css/iPhone.css';
                    link1.media = 'all';
                    head.appendChild(link1);
    
    
    
    
                }
    iPhone.css è stato modificato e ora devo caricare la nuova versione sul server; seguendo le tue indicazioni nel file che andrò a caricare sul server posso scrivere nel codice questo giusto?
    codice:
     if (navigator.userAgent.match(/iPhone/i) || navigator.userAgent.match(/iPod/i)) {
                console.log("iPhone");
                var cssId = 'iPhone'; // you could encode the css path itself to generate id..
                if (!document.getElementById(cssId)) {
    
    
                    var link1 = document.createElement('link');
                    var head = document.getElementsByTagName('head')[0];
                    link1.id = cssId;
                    link1.rel = 'stylesheet';
                    link1.type = 'text/css';
                    link1.href = 'assets/js/dynamicLayout/css/iPhone.css?v=1';
                    link1.media = 'all';
                    head.appendChild(link1);
    
    
    
    
                }
    Devo cambiare il nome del file iPhone.css o basta modificare questa chiamata?

  5. #5
    Amministratore L'avatar di Vincent.Zeno
    Registrato dal
    May 2003
    residenza
    Emilia-Romagna (tortellini und cappelletti land!)
    Messaggi
    19,931
    se la parte js si trova in chiaro nella pagina basta modificare la chiamata come hai fatto.
    per vederne il risultato ovviamente la pagina html/php che visiti deve essere aggiornata con nocache, altrimenti il client tenterà di ripescarla dalla cache.

  6. #6
    Ma c'è un modo di dire alla pagina di pescare la prima volta il file nuovo (appena caricato sul server), e tutte le altre volte prendere il file dalla cache?

  7. #7
    Amministratore L'avatar di Vincent.Zeno
    Registrato dal
    May 2003
    residenza
    Emilia-Romagna (tortellini und cappelletti land!)
    Messaggi
    19,931
    è quello che normalmente accade, solo che i client che già hanno visitato non potranno essere aggiornati con le nuove disposizioni nocache e gli indirizzi modificati per il file css/js.

    tentare di forzare l'aggiornamento non è semplice...
    ma se puoi intervenire su .htaccess allora hai buone speranze.
    dovresti fare in modo che, all'accesso a qualunque pagina (escludiamo quelle che interagiscono con l'utente: tipo la ricezione di dati tramite form), si venga dirottati alla stessa pagina ma con un valore in querystring come hai fatto per il file css.

    una procedura che potresti tenere in piedi il tempo che basta perché gli utenti abituali abbiano le pagine aggiornate. poi puoi eliminarla.

    meglio ancora se leghi la strategia ad un cookie dove ti segni che l'utente ha aggiornato, così da cominciare ad escluderlo dall'aggiornamento forzato. ovviamente prima di fare il redirect va verificato il cookie in questione.

  8. #8
    Amministratore L'avatar di Vincent.Zeno
    Registrato dal
    May 2003
    residenza
    Emilia-Romagna (tortellini und cappelletti land!)
    Messaggi
    19,931
    importante!
    nel caso decidessi di usare la procedura che ti ho suggerito ricorda di fare il redirect solo per il file che non presentano quel valore in querystring, altrimenti va in loop

  9. #9
    Mi sembra che la discussione centri poco con html5!
    Sposto in PHP
    “Che le cose siano cosi, non vuol dire che debbano andare così. Solo che quando si tratta di rimboccarsi le maniche e incominciare a cambiare, vi è un prezzo da pagare. Ed è allora che la stragrande maggioranza preferisce lamentarsi più che fare”.

    Giovanni Falcone

  10. #10
    Amministratore L'avatar di Vincent.Zeno
    Registrato dal
    May 2003
    residenza
    Emilia-Romagna (tortellini und cappelletti land!)
    Messaggi
    19,931
    è una discussione generica

Tag per questa discussione

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2021 vBulletin Solutions, Inc. All rights reserved.