• Super User

    chiarimenti cache del sito, velocità di caricameto e relativi plugin

    Salve a tutti
    ho bisogno di velocizzare un po' il mio sito.
    Sto testando alcuni plugin, ma quello che piu' volevo capire è:

    La cache viene memorizzata solo sul mio browser oppure è una "copia" che viene "salvata" sul server e quindi ne beneficiano tutti gli utenti?

    Faccio diversi test di velocità e vedo che cambiano spesso, anche di 3-4 secondi e quindi non capisco se sto memorizzando solo nel mio browser o ovunque.

    Sapreste darmi qualche chiarimento in piu'?
    Grazie


  • Moderatore

    È entrambe (e non solo). 😄

    Però sono abbastanza certo che i tuoi plugin si basino su cache server.


  • Super User

    @massy said:

    È entrambe (e non solo). 😄

    Però sono abbastanza certo che i tuoi plugin si basino su cache server.

    che differenza c'e' tra cache server e altra cache? (come si chiama, cache browser?)

    Sto utilizzando quello di un noto hosting, pero' non capisco perche' i tempi di caricamento cambiano ogni volta che faccio il test su gtmetrix

    Quale conviene avere?


  • Moderatore

    Dipende dai plugin usati, normalmente si usa la cache lato server per salvare i file statici della pagina renderizzata, html, css e js, il browser poi si occuperà di tenere in cache i css e js.

    Poi volendo si possono cachare anche altre cose sempre lato server ma dipende dal tipo di sito.


  • Moderatore

    Partiamo dalle basi basi allora 😄

    La cache è un processo che consente di salvare file già processati, risparmiando, in teoria, tempo.

    Cache è possibile in ogni macchina che c'è tra te e l'operazione da fare e viceversa.

    Nel caso di siti web, a grandi linee, esistono varie tipologie di cache:
    a) cache dns
    b) cache lato server
    c) cache lato browser
    d) altri tipi che saltiamo.

    La cache dns è quella che ti permette di avere una risposta del dominio in oggetto in tempi più veloci del solito: le macchine deputate a tale scopo (anche il tuo computer ma non solo) registrano in un file che pippo.com è in effetti l'ip 1.2.3.4. Lo sanno e non lo chiedono ogni volta ai server pubblici dns e ciò ti permette di risparmiare tempo nella risposta. Contro è che se cambia il puntamento tu onn lo vedi subito ma dopo un certo tempo, proprio della cache.

    Cache lato server è quella che i server generano per evitare calcoli inutili, semplificando molto.
    Esempio idiota: hai una pagina dove mostri tutti i giocatori di calcio, formata da un template e dei punti variabili, una cosa tipo: "$nome giocatore è un giocatore della squadra $nomesquadra. Ha fatto $numero partite e segnato $numeroGoal".
    Questa pagina la chiami con una cosa tipo: www.squadrecalcio.com/giocatore.html?id=15
    Il sistema cerca l'id 15, fa una chiamata al database, trova i dati corrispondenti e sostituisce i valori.

    Un sistema di cache efficace fa sì che la prima volta che viene chiamata quella pagina venga registrata come un file statico e la prossima volta che qualcun altro la chiamerà troverà i dati già pronti, senza fare richieste al database.

    Ovviamente, un sistema del genere è ottimo quando i dati non cambiano: metterla su un sistema che ha dati variabili ogni secondo ha poco senso, perché daresti all'utente dati vecchi (in verità si può fare una cache selettiva solo su certe parti e non su altre, affinché si guadagni comunque tempo e risorse ma mantenga i dati aggiornati. Per farlo serve un sistema abbastanza complesso e non banale; non conosco quei plugin ma dubito possano aiutarti in tal senso...)
    Aggiungo, per mettere meglio in chiaro la questione, che 'di solito' gli hosting provider implementano già gestioni di cache più o meno invasive e performanti: lavorando sul server si può valutare se una pagina sia sempre uguale o meno, se una certa pagina faccia delle chiamate pesanti o meno, se un certo picco di carico venga raggiunto o meno.

    Ci sono poi i singoli programmi che possono o meno creare una cache ausiliaria.

    Capirai che fare cose un po' a random, usando plugin dei quali non si conosce il reale funziomento, non è una buona pratica quanto un palliativo in buona sostanza. Dire "usa tale plugin per la cache" è come consigliare di usare il cemento nelle costruzioni. Sì, è utile, utilissimo, ma serve sapere un po' di più che palazzo vuoi costruire, che cosa deve reggere, quanto si può spendere in manutenzione etc etc.

    Inoltre, la cache, per sua natura, ha dei limiti: se ogni volta che viene creata una pagina si salva su server per far sì che non debbano esser fatte chiamate di carico pesanti, c'è il rischio di ingolfare il disco rigido con una selva di pagine salvate. E, inoltre, la cache deve essere strutturata bene per evitare di mostrare dati sballati (avete presente il caos del sito dell'inps di qualche mese fa? Ecco, la cache ha aiutato :D)

    C'è infine la cache browser che è quella che avviene sul tuo computer: se tu hai visitato una certa pagina, il browser tende a memorizzare alcune informazioni che hai scaricato affinché la prossima volta che visiti il sito non debba riscaricarle. Anche qui, è ovvio che sia una cosa selettiva: non può salvarti tutto, ma solo quello che il browser reputa abbastanza statico e non modificabile (tipicamente immagini, css, js e poco altro). Nel caso di aggiornamenti si indica, infatti, al cliente, di aggiornare la cache per far sì che possano ricevere dati aggiornati (più che aggiornarla andrebbe detto di cancellarla e rigenerarla).

    Detto ciò: va un po' capito il contesto e perché stai facendo queste operazioni. Se è solo perché hai sentito che la cache aiuta, io ci andrei cauto, sinceramente. Probabilmente risolvi di più ripensando alla struttura del dato più che alla sua compattazione 😄

    Ma non conoscendo troppi fattori non posso esserti di maggiore aiuto..


  • Super User

    eccomi
    beh mi hai dato tante buone informazioni, qualcuna bene o male l'avevo capita ma non ne ero certo.

    In pratica il mio sito è abbastanza dinamico a livello di contenuti perche' vado ad inserire offerte, alberghi oppure post nel blog.
    Ma parlo solo di testo, tutto il resto è invariato per mesi (grafica, logo, immagini ecc)

    In pratica, mostro determinati alberghi con determinate offerte. Se oggi uno di questi alberghi ha un prezzo, supponiamo 50 euro al giorno, e domani lo vorrà cambiare a 55, che tipo di cache dovrei utilizzare?

    Lato browser mi pare un po' inutile perche' magari l'utente sul mio sito ci entra 1 volta per vedere le offerte e magari una seconda volta per prenotare.
    Non è come facebook (esempio) che ci entri piu' volte al giorno, tutti i giorni...

    Al momento sto utilizzando SG optimizer che mi da anche la possibilità di collegarmi a cloudflare che a quanto pare serve per velocizzare il puntamento dei dns (se ho ben capito)
    Ho abilitato anche la voce Memcached che forse è quella che mi gestisce la cosa lato server?
    Inoltre su cloudflare ho impostato la voce "Browser Cache TTL" a 12 ore, credo che cancella la cache ogni 12 ore??

    L'home page è quella che mi interessa di piu' perchè è bella lunga e devo cercare di caricarla piu' velocemente


  • Moderatore

    @massy said:

    Partiamo dalle basi basi allora 😄

    Ciao Massi, ottima guida.


  • User Attivo

    @No_Stress said:

    eccomi
    beh mi hai dato tante buone informazioni, qualcuna bene o male l'avevo capita ma non ne ero certo.

    In pratica il mio sito è abbastanza dinamico a livello di contenuti perche' vado ad inserire offerte, alberghi oppure post nel blog.
    Ma parlo solo di testo, tutto il resto è invariato per mesi (grafica, logo, immagini ecc)

    In pratica, mostro determinati alberghi con determinate offerte. Se oggi uno di questi alberghi ha un prezzo, supponiamo 50 euro al giorno, e domani lo vorrà cambiare a 55, che tipo di cache dovrei utilizzare?

    Lato browser mi pare un po' inutile perche' magari l'utente sul mio sito ci entra 1 volta per vedere le offerte e magari una seconda volta per prenotare.
    Non è come facebook (esempio) che ci entri piu' volte al giorno, tutti i giorni...

    Al momento sto utilizzando SG optimizer che mi da anche la possibilità di collegarmi a cloudflare che a quanto pare serve per velocizzare il puntamento dei dns (se ho ben capito)
    Ho abilitato anche la voce Memcached che forse è quella che mi gestisce la cosa lato server?
    Inoltre su cloudflare ho impostato la voce "Browser Cache TTL" a 12 ore, credo che cancella la cache ogni 12 ore??

    L'home page è quella che mi interessa di piu' perchè è bella lunga e devo cercare di caricarla piu' velocementequando cominci ad avere tanti contenuti, avere una "pagina statica" da fornire per ogni richiesta è impossibile. puoi utilizzarlo su un sito da una decina di pagine.
    io con un sito con 1000 articoli notavo rallentamenti evidente quando raggiungeva circa 40 MB.

    per velocizzare wordpress ci sono altri strumenti: minimizza js e css (autoptimize) e ottimizza le immagini (peso max 50 KB). poi attiva la cache browser come ti hanno indicato, io la cache server non la userei.

    ci sono strumenti più complicati, come il plugin redis, che lavora meglio di una standard cache server, lato db per diminuire le chiamate a db. io non lo uso ed ottengo comunque ottimi risultati sui siti di benchmarking come gtxmetrix e pagespeed


  • Moderatore

    Le immagini max 50KB non è corretto perché dipende dal sito, se è un sito che vive di immagini ad alta risoluzione ottimizzarle a 50KB il sito smette di fornire un servizio quindi max 50KB non è un consiglio ottimale, le immagini vanno ottimizzate al limite della qualità che si vuole mantenere, anche il formato dipende da questo aspetto.

    Poi anche la cache lato server non va esclusa a priori, anzi.

    Non è il numero di pagine che ha un sito che ne determina la cache da usare, 10 o 1000 non ha importanza.

    La cache del browser serve per i file statici come css e js.

    Se il prezzo cambia perché manualmente si aggiorna la pagina è comunque un contenuto statico, se il prezzo cambia dinamicamente per esempio effettuando chiamate REST ogni tot tempo allora è una pagina o ancora meglio un elemento dinamico.

    E poi senza sapere che sito è come si fa a dire questo si o questo no?


  • User Attivo

    @overclokk said:

    Le immagini max 50KB non è corretto perché dipende dal sito, se è un sito che vive di immagini ad alta risoluzione ottimizzarle a 50KB il sito smette di fornire un servizio quindi max 50KB non è un consiglio ottimale, le immagini vanno ottimizzate al limite della qualità che si vuole mantenere, anche il formato dipende da questo aspetto.

    Poi anche la cache lato server non va esclusa a priori, anzi.

    Non è il numero di pagine che ha un sito che ne determina la cache da usare, 10 o 1000 non ha importanza.

    La cache del browser serve per i file statici come css e js.

    Se il prezzo cambia perché manualmente si aggiorna la pagina è comunque un contenuto statico, se il prezzo cambia dinamicamente per esempio effettuando chiamate REST ogni tot tempo allora è una pagina o ancora meglio un elemento dinamico.

    E poi senza sapere che sito è come si fa a dire questo si o questo no?
    si beh non ho spiegato in maniera dettagliata, era una "stima" non tassativa. ho immagini da 100 KB, ma tutte ottimizzate e con risoluzione fissata. però evitare immagini da 500 KB, questo era il messaggio.

    la cache lato server per mia esperienza, con hosting condiviso, non era fattibile con 1000 articoli. ovvio se hai pochi articoli ti conviene. anche perché si rigenera in continuazione se metti, per dire, 10 articoli al giorno.

    non so il sito, infatti ho scritto se ha molti articoli/pagine non conviene, mentre se ne ha pochi potrebbe convenire. in generale per migliorare su gtxmetrix e raggiungere anche ottimi livelli non è necessaria la cache server

    ** per cache server intendo presentare dei file statici .html, forse non era chiaro.
    minimizzare e mettere in cache js e css invece è la base per ottenere risultati


  • Moderatore

    Oddio, dai 🙂

    Questione immagini: ottimo il consiglio di ottimizzare, ma non darei mai un valore. Abbiamo un sito dove vendiamo immagini e la più piccola sarà 1Mega. Abbiamo altri siti dove non superiamo i 70-80kb a dir tanto. Le immagini vanno ottimizzate in base alla richiesta e non per valori assoluti, come giustamente ti ha fatto notare overclokk

    Riguardo la questione massimo 1000 pagine, anche qui, perché?
    Anni fa abbiamo preso in gestione un portale davvero lento. Messa la cache abbiamo ottenuto prestazioni immense. E la cache creò qualcosa come 400.000 pagine statiche (e tipo 70Gb di disco occupato :P). Ovviamente ottimizzando percorsi, file system etc etc. Ma dire che 1000 è il limite massimo perché basato su una tua singola esperienza è fuorviante. Come detto, va valutato caso per caso, situazione per situazione affinché possa avere risultati di un certo tipo.
    Pensare di attivare un plugin ed aver risultati sempre è davvero ottimistico, per me


  • User Attivo

    @massy said:

    Oddio, dai 🙂

    Questione immagini: ottimo il consiglio di ottimizzare, ma non darei mai un valore. Abbiamo un sito dove vendiamo immagini e la più piccola sarà 1Mega. Abbiamo altri siti dove non superiamo i 70-80kb a dir tanto. Le immagini vanno ottimizzate in base alla richiesta e non per valori assoluti, come giustamente ti ha fatto notare overclokk

    Riguardo la questione massimo 1000 pagine, anche qui, perché?
    Anni fa abbiamo preso in gestione un portale davvero lento. Messa la cache abbiamo ottenuto prestazioni immense. E la cache creò qualcosa come 400.000 pagine statiche (e tipo 70Gb di disco occupato :P). Ovviamente ottimizzando percorsi, file system etc etc. Ma dire che 1000 è il limite massimo perché basato su una tua singola esperienza è fuorviante. Come detto, va valutato caso per caso, situazione per situazione affinché possa avere risultati di un certo tipo.
    Pensare di attivare un plugin ed aver risultati sempre è davvero ottimistico, per me
    beh se hai immagini di 1 MB che l'utente si deve scaricare per visualizzare la pagina, dubito che da cellulare possa avere buoni risultati.

    1000 pagine era un esempio, basato su "hosting condiviso", che è la soluzione più comune. tu "risolvi" questo problema con un server dedicato e 70 GB, con la CPU che comunque sarà occupata per fare quel lavoro. anche con 500 pagine si ferma il back end su un sito "medio" a livello di hosting.
    poi se hai un sito da 10 pagine lo puoi fare. non mi sembra "ottimizzare" creare 400 mila pagine, si riescono ad ottenere risultati senza sovraccaricare la CPU ottimizzando css e js (e immagini)


  • Moderatore

    Per cachare una pagina html la cpu lavora solo la prima richiesta come lavorerebbe comunque senza cache (il php lo dovrà pure eseguire), alla seconda richiesta la cpu è libera (o quasi), e così vale per tutte le pagine, 10, 1000 o di più, le pagine vengono cachate solo nel momento in cui vengono richieste e se la cahce è scaduta.

    Ora se tu @applem hai avuto problemi con siti "corposi" il problema non è di cache si o no, il problema è che probabilmente è sottotimato il server in base alle visite che fa il sito e finchè le pagine più visitate non vengono cachate allora può avere dei rallentamenti, poi se il server non ha spazio anche questo è un problema.

    Anche nel tuo caso si possono fare solo supposizioni non conoscendo la configurazione.


  • User Attivo

    @overclokk said:

    Per cachare una pagina html la cpu lavora solo la prima richiesta come lavorerebbe comunque senza cache (il php lo dovrà pure eseguire), alla seconda richiesta la cpu è libera (o quasi), e così vale per tutte le pagine, 10, 1000 o di più, le pagine vengono cachate solo nel momento in cui vengono richieste e se la cahce è scaduta.

    Ora se tu @applem hai avuto problemi con siti "corposi" il problema non è di cache si o no, il problema è che probabilmente è sottotimato il server in base alle visite che fa il sito e finchè le pagine più visitate non vengono cachate allora può avere dei rallentamenti, poi se il server non ha spazio anche questo è un problema.

    Anche nel tuo caso si possono fare solo supposizioni non conoscendo la configurazione.io ho provato ad ottimizzare un sito utilizzando quel metodo, ma cresce troppo di dimensioni per un hosting condiviso, come è la maggior parte dei siti web.
    avere una VPS solo per avere una cache da GB ed ottenere lo stesso risultato che puoi ottenere utilizzando la cache per css e js per me non ha senso. non credo ci siano siti "importanti" che presentino html cachati se hanno tanti articoli.
    come ho detto se si vuole proprio "osare" si lavora con redis cache che ottimizza le richieste a db, oltre js e css che oggi prendono la parte principale.

    repubblica, ilsussidiario.net, ansa e tanti altri non hanno html statici.

    poi ovvio se hai un sito di ristorazione di una pagina lo puoi fare


  • Moderatore

    Non c'è bisogno di avere una VPS per cachare l'html della pagina, si può fare anche con un condiviso, ma è ovvio che si deve trovare un compromesso tra il servizio che si usa e il limite di ciò che si può ottimizzare, se il mezzo non ti consente di utilizzare certi strumenti non li usare, ma questo non vuol dire che anche gli altri hanno la tua stessa configurazione, bisogna sempre valutare ogni singola situazione, generalizzare è sbagliato, un sito di ristorazione si e un quotidiano no? E chi lo dice?

    Si valuta sempre al momento di ottimizzare e non prima.


  • User Attivo

    @overclokk said:

    Non c'è bisogno di avere una VPS per cachare l'html della pagina, si può fare anche con un condiviso, ma è ovvio che si deve trovare un compromesso tra il servizio che si usa e il limite di ciò che si può ottimizzare, se il mezzo non ti consente di utilizzare certi strumenti non li usare, ma questo non vuol dire che anche gli altri hanno la tua stessa configurazione, bisogna sempre valutare ogni singola situazione, generalizzare è sbagliato, un sito di ristorazione si e un quotidiano no? E chi lo dice?

    Si valuta sempre al momento di ottimizzare e non prima.lo dice il fatto che il quotidiano ha migliaia di pagine, quello era il punto.
    il sito di ristorazione con la pagina dei contatti e dei menu è possibile rendere pagine statiche html.

    un sito con articoli quotidiani significa una cache enorme, che si deve autorigenerare ad ogni articoli cioè ogni 30 minuti, oltre agli annunci pubblicitari che sono dinamici. per me è infattibile e ho citato siti ultraottimizzati, se guardi su pagespeed, che non usano quel sistema.

    ripeto: con una cache e minimizzazione dei css e js riesce ad ottenere già ottimi risultati, specialmente se non hai annunci pubblicitari interni.

    per quanto riguarda il caso dell'utente, mi sembra avesse uno shop, per me non ha senso una cache che renda pagine html. con un paio di plugin per css e js puoi avere ottimi risultati. poi c'è il capitolo immagini. se non ha annunci pubblicitari non ha molti problemi ad avere un buon risultato.
    poi su mobile conta anche il tema che utilizza, se non è ottimizzato per cellulari allora il caching è inutile qualunque esso sia


  • Moderatore

    Se un quotidiano con migliaia di articoli è su un server condiviso la cache dovrebbe essere la sua ultima preoccupazione, non so se mi spiego.

    Si deve generare ogni 30 minuti? In base a cosa? Cioè, non è scritto da nessuna parte che si deve per forza fare così, anche qui, ogni sito è diverso e ogni ottimizzazione è diversa, la scadenza della cache è relativa al sito non alla tipologia di sito.

    Ormai gli annunci pubblicitari sono tutti generati da chiamate API usando javascript quindi non vedo il problema di avere la pagina statica, prova tu stesso, crei una pagina html e metti adsense e vedi che succede.

    Se ci sono annunci "statici" che hanno bisongo di essere rigenerati ci sono altre tecniche come la cache parziale dell'elemento.

    Ripeto: ogni sito va valutato di volta in volta, non esiste una ottimizzazione unica valida per tutti se no basterebbe installare un plugin, pigiare un bottone è basta, sito ottimizzato, purtroppo non funziona così.


  • User Attivo

    @overclokk said:

    Se un quotidiano con migliaia di articoli è su un server condiviso la cache dovrebbe essere la sua ultima preoccupazione, non so se mi spiego.

    Si deve generare ogni 30 minuti? In base a cosa? Cioè, non è scritto da nessuna parte che si deve per forza fare così, anche qui, ogni sito è diverso e ogni ottimizzazione è diversa, la scadenza della cache è relativa al sito non alla tipologia di sito.

    Ormai gli annunci pubblicitari sono tutti generati da chiamate API usando javascript quindi non vedo il problema di avere la pagina statica, prova tu stesso, crei una pagina html e metti adsense e vedi che succede.

    Se ci sono annunci "statici" che hanno bisongo di essere rigenerati ci sono altre tecniche come la cache parziale dell'elemento.

    Ripeto: ogni sito va valutato di volta in volta, non esiste una ottimizzazione unica valida per tutti se no basterebbe installare un plugin, pigiare un bottone è basta, sito ottimizzato, purtroppo non funziona così.ho un sito di notizie con 6000 articoli (hosting condiviso su aruba) con ottimi risultati su pagespeed nonostante non abbia ottimizzato gli annunci pubblicitari, a differenza della concorrenza che ho citato, specialmente ilsussidiario. funziona benissimo, ma la cache era ingestibile.
    quando crei un nuovo contenuto devi rigenerare tutte le altre pagine, vale anche per i "piccoli" blog da 500 articoli. se hai una sidebar con "ultimi articoli" andrà rigenerato. è una tecnica "obsoleta" per quanto mi riguarda, difatti non la si usa più.

    gli annunci: se hai annunci "native" i contenuti degli annunci si devono rigenerare e "mischiare" ai nuovi articoli, se non rinnovi la cache avrai immagini e link ad articoli del giorno precedente ecc ecc

    ovviamente non tutti i siti sono uguali, però ci sono 2-3 plugin da prendere in considerazione per iniziare un'ottimizzazione base ed ottenere subito risultati. per quanto riguarda uno shop, con plugin per css e js + ottimizzazione immagini, io credo sia a posto. ovviamente non raggiunti i 100 su pagespeed, ma un buon risultato