W3 Total Cache, CDN e file dei temi [chiuso]


10

Di recente ho aggiornato il file style.css della mia installazione di WordPress. La modifica è stata efficace: quando ho effettuato l'accesso come amministratore (il mio blog è impostato in modo che all'amministratore non venga mai fornita una versione memorizzata nella cache del sito, ma una "live"), posso vederli.

Ma il mio blog viene offerto tramite una CDN (usando W3 Total Cache). Attraverso la CDN, le modifiche non sono efficaci: la CDN non serve i file modificati dal mio tema. Anche se li ho caricati dopo la modifica (Dashboard> Prestazioni> CDN> Carica file dei temi.

La mia CDN funziona su AmazonCloud Front. E Minify è disabilitato su W3 Total Cache.

Il file del tema offerto tramite il mio CDN è una versione compressa: style.css.gzip

Devo "eliminare" gli oggetti dalla mia CDN o aspettare un po 'di più (è passata più di una settimana). E sì, svuoto la cache del browser che sto usando per vedere che le modifiche stanno diventando effettive. O c'è qualcos'altro che mi manca?

Grazie,

P.

Risposte:


10

È necessario entrambi

  1. style.css?ver=xxx.xxxEffettua la versione dei tuoi file (chiamandolo ) e assicurati che la distribuzione di CloudFront abbia "Stringhe di inoltro query" attivate. Questa è l'opzione migliore, poiché significa che tutto ciò che devi fare è incrementare il numero nella stringa di query e CloudFront recupererà automaticamente questo file.

  2. Annullare manualmente i file tramite la Console AWS (quando si modifica la distribuzione è presente una scheda di invalidamento)

Per attivare "Inoltra query stringhe", procedi come segue:

  • Modifica la distro di Cloudfront spuntando la casella di controllo a sinistra della "i", quindi fai clic sul pulsante "Impostazioni di distribuzione" nella barra degli strumenti
  • Vai alla scheda Comportamenti
  • Seleziona la linea e fai clic su "Modifica"
  • Modificare "inoltra stringhe di query" su Sì
  • Fai clic su "Sì, modifica"

1
@kaiser yup, il datetime come versione è il modo migliore per eseguire il versioning del file. Tuttavia, devi comunque assicurarti che l'opzione "Forward Query Strings" sia attivata in CloudFront, altrimenti il ​​tuo numero di versione ben realizzato verrà ignorato: P
anu

Grazie. Ho due domande per te poiché non ho familiarità con questa procedura. 1) Il nome dei file "versionati" dovrebbe seguire esattamente l'esempio che hai dato (con il punto interrogativo, i segni uguali e sostituire tutte le "x" con numeri di mia scelta) giusto? 2) Sulla mia console AWS per CLoudFront, faccio clic sulla "I" a sinistra della tabella proprio accanto alla distribuzione che ho creato per il mio blog. Questo mi permette di accedere alle impostazioni della distribuzione. Lì vedo che le "stringhe della query diretta" sono "false". Devo replicare questo "comportamento" con gli stessi valori ma con "true" per "For. Q. stringhe"
Parneix

1
1. Sì, oppure puoi usare il buon significato di @ kaiser ma una risposta incompleta per dare un nome al tuo file. 2. io aggiornare la risposta con il processo
anu

8

Esiste semplicemente un "trucco" per impedire la memorizzazione nella cache, quando il contenuto del file è cambiato: aggiungi un numero di versione, che è impostato sull'ultima data / ora in cui hai modificato il file.

add_action( 'wp_enqueue_scripts', 'wpse61738_non_cached_stylesheet' );
function wpse61738_non_cached_stylesheet()
{
    wp_enqueue_style( 
        'style-main',
        get_stylesheet_directory_uri().'/style.css',
        array(),
        filemtime( get_stylesheet_directory().'/style.css' )
    );
}

Questo aggiungerà ?ver=0123456789al tuo link di riferimento style.css nella tua intestazione. Il numero di versione cambierà solo quando il contenuto del file verrà modificato. Quindi hai una soluzione che funziona perfettamente con a) cache lato server b) cache del browser e si aggiorna automaticamente.


Ok, questa è un'opzione davvero interessante: rimuove la necessità di controllare manualmente il mio style.cssfile dopo ogni modifica (cosa che dimenticherò di fare in un punto o nell'altro). Ora, se posso chiedere, dove posso aggiungere questo codice? Vorrei indovinare il mio functions.phpfile?
Parneix,

Non lo so, dove è necessario aggiungere questo codice. Basta cercare tra i file dei temi e sostituire la chiamata "normale" al file style.css. Pubblicherò un breve aggiornamento, quindi puoi inserirlo nel tuo file Functions.php (ciò significa che devi rimuovere la chiamata originale). E a proposito: questa è solo un'aggiunta alla risposta di @anu. (Voti ancora apprezzati :)
kaiser

1
Nessun problema! Capisco perfettamente che la posizione di questo codice potrebbe cambiare a seconda del tema utilizzato. Riesco ad aggiungerlo al mio functions.phpfile. Penso ancora che sia un buon complemento alla soluzione fornita da @anu. Grazie mille per l'aiuto.
Parneix,

-1

una breve risposta ...

  1. Elimina tutti i file del tema e caricalo nuovamente. alcune volte l'azione di eliminazione cancella il CDN

  2. Sì, potresti provare Purge, ma di solito Elimina e ricarica di nuovo è più veloce.

  3. Controlla anche le impostazioni in W3TC e in Amazon. La cache predefinita per in W3TC è in genere 365 giorni. che è 31536000 secondi :)

In Amazon .. ci sarà un'impostazione per gli endpoint per interrogare nuovamente il CDN. so che in Rackspace il valore predefinito è 24 ore.


1
Ci sono modi molto migliori per farlo rispetto a questo, vedi la mia risposta
anu

"Elimina tutti i file del tema e caricalo nuovamente. alcune volte l'azione di eliminazione cancella il CDN ”Intendi per me eliminarli sul mio sito Web, giusto? Quindi ricaricarli nella mia installazione di WordPress. E quindi suppongo che il "Carica file di temi" di nuovo tramite il dashboard di W3 Total Cache?
Parneix,

1
@Parneix sul serio, non cancellare tutto a meno che non sia necessario. Quasi sicuramente non funzionerà se non elimini anche tutto dalla CDN. Ci sono modi MOLTO migliori per invalidare il tuo file CSS
obsoleto

1
Sì grazie! Ho preso nota del tuo suggerimento. Apprezzo davvero tutto l'aiuto che sto ricevendo qui. Non solo sto risolvendo il mio problema, ma sto anche imparando nuove cose.
Parneix,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.