Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2011
    Messaggi
    11

    Problema aggiornamento con chrome

    Ciao ragazzi, stavolta vi chiedo una cosa a livello puramente tecnico.

    Ho un sistema di area riservata (login/logout) nel quale ho un problema alquanto fastidioso. Questo problema si presente, per ora, solo con chrome.
    Accedendo all'area riservata divido le varie sezioni con dei frame (quello di sinsitra si aggiorna ogni 60 secondo con il setTimeout) e il riconoscimento avviene ovviamente tramite sessioni.

    Essendo che io ho una lista presenti, devo aggiornare e controllare le presenza in base a come uno esce dell'area riservata. Se usa il logout non c'è problema chiude le sessioni e elimina il record della presenza del database.. ma se percaso si esce dalla X bisogna fare un controllo più accurato.

    Uso un semplicissimo metodo di refresh di un campo del record della tabella presenti e l'aggiorno ogni minuto verificando che questo aggiornamento non sia più vecchio di 5 minuti. Se è più vecchio di 5 minuti automaticamente elimina il recordo di quell'utente.

    Specifico che le pagine di aggiornamento del refresh e la forzatura di uscita sono due pagine differenti e sono tutte e due inserite nel frameset ma non visibili ed entrambe si aggiornano ogni 60 secondi.

    Ora qualcuno mi spiega come mai chrome ha la bella idea di non far aggiornare quel campo e quindi sbattere fuori dalla lista dei presenti l'utente che comunque rimane sulla pagina di visualizzazioni non chiudendosi le sessioni?

    Gli danno fastidio i refresh automatici della pagina? Sapevo di problemi del meta tag refresh e infatto ho utilizzato setimeout.

    Qualcuno sa come posso intervenire?

  2. #2
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    problema di cache?

    note:
    -in caso di problemi di cache potresti semplicemente provare ad aggiungere alle chiamate un parametro fittizio con valori incrementali (es. il timestamp attuale o un valore autoincrementale) o pseudocasuali
    -questi refresh così frequenti non mi sembrano il massimo come soluzione... senza stravolgere tutto (e magari eliminando anche i frames) non puoi usare AJAX?

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2011
    Messaggi
    11
    Originariamente inviato da eiyen
    problema di cache?

    note:
    -in caso di problemi di cache potresti semplicemente provare ad aggiungere alle chiamate un parametro fittizio con valori incrementali (es. il timestamp attuale o un valore autoincrementale) o pseudocasuali
    -questi refresh così frequenti non mi sembrano il massimo come soluzione... senza stravolgere tutto (e magari eliminando anche i frames) non puoi usare AJAX?
    Intanto ti ringrazio per la risposta.

    Si, avevo pensato al problema di cache. Però fino adesso sono stato bloccato perchè il problema si è verificato poche volte e solo con chrome.

    Abbandonare è una mia idea fin dal principio purtroppo però per ora è una struttura troppo complessa per poter pensare di cambiarla in un'attimo e soprattutto ci sono troppi utenti per il cambio. Sicuramente è una cosa a cui lavorerò.

    L'unica cosa a cui stavo pensando è togliere le due pagine e farne una unica che aggiorna e controlla subito. Perchè io per un controllo maggiore facevo un controllo sull'esistenza della SESSIONE ed è ovvio che se non esisteva la sessione non aggiornava il campo del tabella utente online e quindi il tempo di attesa risultava maggiore e lo buttava fuori.

    Altrimenti come potrei agire? Non riesco a trovare un metodo alternativo perchè un parametro di controllo ci deve sempre essere sennò come cavolo faccio a sapere?

  4. #4
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    Se non hai modo di rivedere un po' la struttura non puoi provare come ti ho detto con il parametro fittizio? Inoltre puoi anche verificare l'uso di meta tag e header per forzare il "no-caching" delle pagine. A occhio sembra un problema di cache... se riesci a "riprodurre" il fenomeno fai un test, p.es.: se arrivi in una situazione in cui NON si aggiorna e da lì in avanti resta "online" un utente, senza chiudere il browser prova a cancellarne manualmente la cache e vedi se la cosa cambia... se sì è quello il problema... inoltre il fatto che si verifichi un po' "casualmente" potrebbe significare che succede anche con altri browser ma non ti è ancora capitato di osservarlo!

  5. #5
    Utente di HTML.it
    Registrato dal
    May 2011
    Messaggi
    11
    Originariamente inviato da eiyen
    Se non hai modo di rivedere un po' la struttura non puoi provare come ti ho detto con il parametro fittizio? Inoltre puoi anche verificare l'uso di meta tag e header per forzare il "no-caching" delle pagine. A occhio sembra un problema di cache... se riesci a "riprodurre" il fenomeno fai un test, p.es.: se arrivi in una situazione in cui NON si aggiorna e da lì in avanti resta "online" un utente, senza chiudere il browser prova a cancellarne manualmente la cache e vedi se la cosa cambia... se sì è quello il problema... inoltre il fatto che si verifichi un po' "casualmente" potrebbe significare che succede anche con altri browser ma non ti è ancora capitato di osservarlo!
    Proverò a passargli un valore get casuale così cerco di forzare il server a scaricare nuovamente la pagina (e probabilmente è proprio questo il problema) e potrei indurgli un controllo sul valore get.. però poi diventerebbe troppo pesante..

  6. #6
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    Cosa intendi con "indurgli un controllo sul valore get"? e "troppo pesante" in che senso? In generale sarebbe meglio usare AJAX cmq, questi refresh continui non sono molto pratici...

  7. #7
    Utente di HTML.it
    Registrato dal
    May 2011
    Messaggi
    11
    Originariamente inviato da eiyen
    Cosa intendi con "indurgli un controllo sul valore get"? e "troppo pesante" in che senso? In generale sarebbe meglio usare AJAX cmq, questi refresh continui non sono molto pratici...
    Purtroppo con Ajax le mie conoscenze sono basilari e non ho idea di come procedere. Se mi dai un'idea di come poter procedere provo a "studiare".

    Per controllo sul valore GET intendo che rispetti le caratteristiche con quel valore GET è stato creato. Se per esempio induco un valore numerico controllo che il valore sia numerico. Come ti dicevo però non vorrei fosse un controllo troppo pesante visto che avviene ogni 60 secondi.

  8. #8
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    Su ajax cerca un po'... usando cmq qualche libreria (es. jquery).
    Per il parametro: devi solo aggiungere un parametro fittizio tipo "n=" e ogni volta lo incrementi.

  9. #9
    Utente di HTML.it
    Registrato dal
    May 2011
    Messaggi
    11
    Originariamente inviato da eiyen
    Su ajax cerca un po'... usando cmq qualche libreria (es. jquery).
    Per il parametro: devi solo aggiungere un parametro fittizio tipo "n=" e ogni volta lo incrementi.
    Cercherò qualcosa su Ajax resta comunque il fatto che dovrei fare una chiamata su aggiornamento e quindi un refresh mi servirebbe lo stesso.

    Per quanto riguarda il valore fittizio invece stavo pensando che mi servirebbe solo per il primo passaggio ovvero quanto l'utente entra e apre il frameset. Una volta dentro il frameset la pagina di aggiornamento che si aggiorna ogni 60 secondi viene nascosta e quindi fa il reload di se stessa non andando a toccare il frameset da dove parte il valore GET.

    Quindi credo non mi sarebbe utile nemmeno questa situazione no? O mi sbaglio e quando si aggiorna una pagina del frameset viene toccato anche la pagina principale?

  10. #10
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    AJAX e "refresh" non è la stessa cosa... certo la chiamata avviene lo stesso! Però lavorare in maniera asincrona così è cmq meglio, nel tuo caso... in sostanza avresti una pagina che tiene conto degli utenti online che farebbe una chiamata AJAX per avere la lista aggiornata (ogni "X" secondi, diciamo)... le chiamate (a se stessa per il refresh o allo script ajax) hanno ovviamente un indirizzo... bisogna aggiungere un parametro... nel caso del refresh, anzichè fare un vero "refresh" faresti un redirect alla stessa pagina variando l'indirizzo solo per il parametro incrementale

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 © 2025 vBulletin Solutions, Inc. All rights reserved.