[risolto] accesso casuale e cache
-
riesumo il post per dire che grazie a luX0r75 abbiamo sistemato la cosa, in pratica il problema era l'attributo preload del tag <audio> che per default non sta a none come io credevo ma ad altri valori (dipende dal browser)
cosicche' avveniva cmq un precaricamento dalla cache che rovinava l'accesso random
ora avendo messo preload="none"
tutto va bene
grazie di nuovo a luX0r75 ed a tutti quelli che ci hanno sbattuto la capa insieme a me -
Ciao.
Felice che tu abbia risolto disabilitando il preload.
Avevo comunque un'altra soluzione pronta
-
@luX0r75 se vuoi diccela che la provo cmq
anche perche' gli esperimenti non sono finiti , anzi...
per es. la prox cosa che faro' e' togliere il mix lista su JS
ora che funge mi sembra uno spreco di codice e risorse
saluti -
Sì, sono d'accordo, fai tutto server side.
Quando crei il tag <audio> in PHP, aggiungi al nome del file che utilizzi nel <source> un uniqid().
Del tipo:<?php echo '<audio preload="none"><source src="nome-del-file.mp3?v='.uniqid().'"></audio> ?> -
attualmente il source lato server e' vuoto:
<audio id="rvAudio" preload="none">
<source src="">
</audio>
cosa dovrei fare, una cosa tipo <source src="".uniqid()> ? -
Scrivi qui il javascript che usi per valorizzare l'attributo src...
-
if (brc == '') { r=Math.floor((Math.random()*l)); track = arr[r]; arr.splice(r,1); l=arr.length; if (l == 0) { arr=ooo.slice(); } audioPlayer.src = jjj[track]; title = audioPlayer.src; } else { audioPlayer.src = brc; title = brc; brc = ''; } -
Non so cosa sia brc. Se lo ritieni necessario aggiungi la modifica anche nell'else.
if (brc == '') { r=Math.floor((Math.random()*l)); track = arr[r]; arr.splice(r,1); l=arr.length; if (l == 0) { arr=ooo.slice(); } // MODIFICA: aggiunto Unix epoch time al nome del file title = jjj[track]; uniqid = new Date().getTime(); audioPlayer.src = title + '?v=' + uniqid; } else { audioPlayer.src = brc; title = brc; brc = ''; } -
brc e' l'eventuale titolo gia' pronto che viene dal tasto "cerca brano" quindi non ci interessa
mi stai dicendo che devo mettere un codice casuale sia lato server, sia lato client?
ok provo -
@kippo No, solo lato client!
Non è un codice casuale, è il numero di millisecondi passati dal 1970, quindi per il tuo caso è alla stregua di un ID univoco. -
ok funziona anche il 2° metodo, ma preferisco il 1°
ora un paio di curiosita' finali:- il 2° metodo come fa a matchare il nome file? cioe' se io ho pippo.mp3 come fa a suonare pippo+IDunivoco.mp3?
- perche' non funzionava senza preload="none"? ok veniva fatto un precarico ma che significa questo che venivano ripetuti i numeri random?
grazie
-
Il nome del file è sempre quello, cambia la query string sull'URL (?v=idunivoco).
La cache del browser non può agire sui contenuti delle variabili in memoria, ma solo su quelle dello storage locale (vedi cookie).
In generale non interpreta gli script ma si limita a fare il caching della risposta in HTML e delle eventuali risorse statiche esterne (js, css, immagini, video).Se il player audio html prevede l'impostazione di preload, è probabile che memorizzi qualcosa nello storage locale.
Il tuo codice php restituisce un HTML privo di file audio, perché quest'ultimo viene caricato successivamente al caricamento della pagina tramite JS.
Questo metodo crea pagine HTML che sono tutte uguali e quindi il browser non trovando differenze con la versione memorizzata nello storage locale, tende a caricare le risorse che trova nella cache.Per esserne sicuri bisognerebbe vedere l'algoritmo di cache del browser, ma se con preload="none" funziona, allora molto probabilmente è così.
Puoi fare anche un'altra prova.
Lato PHP fai restituire il tag <audio> già con un file random impostato... solo il primo, poi gli altri puoi continuare a gestirli con JS.
Con il file già impostato, l'HTML restituito varia perché cambia il nome del file. Di conseguenza il ricorso alla cache dovrebbe avvenire solo se il nome del file è uguale a quello già in cache. -
grazie mille per la pazienza, la competenza e la disponibilita' dimostrati
alla prox -
Ti ho inviato fattura elettronica

Ciao, ciao
-
ah beh allora
non ascoltate ein brutto capellonen