Oppure

Loading
26/02/15 16:57
Roby94
Mi trovo ancora a scrivere per la piccola GUI che sto realizzando per Ethernet shield, oggi parliamo di cache.
Sto cercando di rendere il caricamento dei vari file provenienti da Arduino il più veloce possibile, impresa ardua con l'hardware che mi ritrovo in mano. A questo punto sto cercando di dividere il codice css in piccoli fogli stile indipendenti, so che puo risultare controproducente ma sto cercando di affiancare a questi una conservazione in cache piuttosto duratura, per far cio inserisco questo paramento nell'header di risposta in caso di file css
Cache-Control: public; max-age = 2592000


Osservo però da firebug che l'header viene totalmente ignorato, i fogli stile ad ogni aggiornamento della pagina vengono ricaricati da 0, come mai? Mi sto dimenticando qualcosa? In effetti è probabile sono oramai anni che non lavoro più su server apache.
Mi potreste aiutare? Vorrei evitare il caricamento continuo di file che non cambiano mai, anche perché il caricamento attuale della pagina principale avviene in poco meno di 5secondi, un tempo esagerato per il contenuto.

Grazie.


EDIT: Nella request http appare Cache-Control: max-age=0 come mai? e cosa significa quando è il client ad inviare questo parametro?
Ultima modifica effettuata da Roby94 26/02/15 17:00
aaa
26/02/15 18:52
darioza
Ciao, piccola premessa: io, apache e php spesso facciamo a botte, sono più propenso ad altre soluzioni.
Detto ciò:


    Cache-Control: public; max-age = 2592000


Sicuro di quel ";" ?

cache-control: private, max-age=0, no-cache


Funziona, come risultato ovviamente l'esatto opposto
Magari è solo una svista, magari non dipende da quello...
Prova...:k:
Ultima modifica effettuata da darioza 26/02/15 22:36
aaa
26/02/15 20:47
pierotofy
Quando hai i devtools aperti, solitamente ogni cache viene ignorata. Controlla le impostazioni di Firebug.

Considera inoltre che dividere il tuo CSS in tanti files ha l'effetto opposto di quello che stai cercando di fare; è meglio consolidare (e minificare) i CSS in un solo file, inviato alla prima pagina che l'utente visita, con un caching di qualche giorno, così il browser ha solamente un file da richiedere (invece che multipli). C'è una nuova connessione TCP aperta per ogni file, che è un overhead molto più alto rispetto a trasferire un pò di più bytes in un singolo file.

Cambierei approccio.
Il mio blog: piero.dev
01/03/15 1:09
Roby94
Sostituendo il punto e virgola non cambia niente, non so se il browser accetti entrambe le formattazioni, mi sembrerebbe strano ma non si sa mai, in effetti ho visto usare entrambe le punteggiature. Non è semplice verificare la corretta interpretazione del browser visto che non da risultati cosi palesi l'header.

Piero ho verificato firebug è settato per adoperare la cache, per togliere ogni dubbio le verifiche le ho fatte anche senza firebug ma il tempo di caricamento non diminuisce.

Per dividere intendo che le regole css non si trovano piu nella pagina ma in un file CSS cosi da poterlo mettere in cache.


PS darioza, scusa se non ti ho ancora risposto ma sono riuscito a mettermi al pc pochissimo in questi ultimi giorni, ti risponderò presto, te lo prometto.
aaa
01/03/15 18:15
darioza
rispondo al tuo edit
Cache-Control: max-age=0
dice di non tener conto della cache, come nel frammento di codice che ti avevo riportato io

strano in ogni caso come comportamento, hai appurato che viene effettivamente riscaricato?
ed hai provato con valori max-age più piccoli?

P.S.
tranquillo, rispondimi poi con calma, stiamo qui tanto :k:
aaa
02/03/15 11:56
Roby94
Si si, so cosa significa quella riga ma non capisco perché sia il client ad inviarla, alla fine è proprio lui che si occupa della conservazione della cache, oppure anche il server può predisporre una cache?

Che sia scaricato non ne sono certo, ma sono certo che la richiesta al server venga comunque effettuata una seconda volta, cosa che non dovrebbe accadere se il client effettivamente conservasse una copia della pagina in cache.

Proprio non ne vengo a capo, di sicuro il problema deve essere del server, ma com'è possibile visto che si tratta di una semplice riga di intestazione?!

Edit: Allego l'analisi di firebug, come si può vedere la cache viene usata, ma comunque il browser tenta la connessione e riscarica i file.
Ultima modifica effettuata da Roby94 02/03/15 13:37
aaa
02/03/15 15:36
pierotofy
Quando il server invia i files CSS, viene fornito l'header Last-Modified?

w3.org/Protocols/rfc2616/…

13.3.1 Last-Modified Dates

The Last-Modified entity-header field value is often used as a cache validator. In simple terms, a cache entry is considered to be valid if the entity has not been modified since the Last-Modified value.
Il mio blog: piero.dev
02/03/15 18:18
Roby94
Inserito l'header, il browser ora invia a sua volta l'header If-Modified-Since, ma in ogni caso ritenta la connessione, nonostante il termine di validità della cache non sia passato.
aaa