Scopri procedure per la risoluzione dei problemi che potrebbero esserti utili se riscontri i seguenti problemi durante l'utilizzo di Cloud CDN.
Se il problema che riscontri è correlato ai backend esterni, consulta anche Risoluzione dei problemi relativi al backend esterno e ai NEG internet.
Problemi e soluzioni generali
Questa sezione descrive alcuni problemi comuni e le relative soluzioni.
Le risposte non vengono memorizzate nella cache
Se le risposte non vengono memorizzate nella cache, controlla innanzitutto che Cloud CDN sia abilitato per il servizio di backend o il bucket di backend. Quando abiliti Cloud CDN, potrebbero essere necessari alcuni minuti prima che le risposte inizino a essere memorizzate nella cache.
Cloud CDN memorizza nella cache solo le risposte con contenuti memorizzabili nella cache.
Queste informazioni vengono trasmesse nelle intestazioni delle risposte HTTP, in combinazione con la configurazione del backend. Quando configuri un'intestazione della risposta personalizzata con cdn_cache_status, puoi osservare lo stato della cache nei log di Cloud CDN e determinare se una risposta è stata pubblicata a seguito di un fallimento della cache.
Se le risposte per un URL non vengono memorizzate nella cache, controlla quali intestazioni vengono restituite per quell'URL e come viene configurata la memorizzazione nella cache per il backend.
Esistono diversi modi per controllare le intestazioni delle risposte:
- In Google Chrome, tramite il riquadro Rete di DevTools
- In Mozilla Firefox, tramite lo strumento Monitor di rete tra gli Strumenti per sviluppatori
- Con uno strumento a riga di comando come curl o GNU Wget
L'esempio seguente mostra l'utilizzo di curl per controllare le intestazioni della risposta HTTP per http://example.com/style.css:
curl -s -D - -o /dev/null http://example.com/style.css
Output:
HTTP/1.1 200 OK
Date: Tue, 16 Feb 2016 12:00:00 GMT
Content-Type: text/css
Content-Length: 1977
Via: 1.1 google
Il confronto di queste intestazioni con i requisiti dei contenuti memorizzabili nella cache rivela che nella risposta manca l'intestazione Cache-Control richiesta (supponendo che la modalità cache sia impostata su USE_ORIGIN_HEADERS).
Il metodo di impostazione delle intestazioni dipende dal tipo di server di origine. Se esegui un server web su Compute Engine, consulta la documentazione del software del server web per informazioni dettagliate sulla configurazione delle intestazioni della risposta. Per Cloud Storage, contrassegnare l'oggetto come condiviso pubblicamente comporta l'invio delle intestazioni appropriate.
Dopo aver riconfigurato il server di origine per aggiungere l'intestazione richiesta, puoi utilizzare di nuovo curl per controllare il risultato:
curl -s -D - -o /dev/null http://example.com/style.css
Output:
HTTP/1.1 200 OK
Date: Tue, 16 Feb 2016 12:00:30 GMT
Content-Type: text/css
Content-Length: 1977
Cache-Control: max-age=86400,public
Via: 1.1 google
curl -s -D - -o /dev/null http://example.com/style.css
Output:
HTTP/1.1 200 OK
Date: Tue, 16 Feb 2016 12:00:31 GMT
Content-Type: text/css
Content-Length: 1977
Cache-Control: max-age=86400,public
Via: 1.1 google
curl -s -D - -o /dev/null http://example.com/style.css
Output:
HTTP/1.1 200 OK
Date: Tue, 16 Feb 2016 12:00:30 GMT
Content-Type: text/css
Content-Length: 1977
Cache-Control: max-age=86400,public
Via: 1.1 google
Age: 2
L'ultima risposta in questo esempio include un'intestazione Age.
Cloud CDN aggiunge un'intestazione Age alle risposte che gestisce dalla cache. In questo caso, l'intestazione indica che la risposta è stata pubblicata correttamente dalla cache utilizzando una voce di cache creata due secondi prima.
Inoltre, se gli ETag sono abilitati sulle istanze di backend, Cloud CDN si basa sui di loro per confermare l'aggiornamento dell'oggetto. Se le istanze di backend pubblicano ETag diversi sullo stesso oggetto, Cloud CDN considera le mancate corrispondenze come un fallimento della cache e aggiorna l'oggetto. Per evitare questo problema, le istanze di backend devono pubblicare lo stesso ETag, oppure gli ETag devono essere disattivati.
Per verificarlo, esegui curl ripetutamente e osserva le variazioni del valore ETag:
curl -s -D - -o /dev/null http://example.com/image.png
Output:
HTTP/2 200 date: Fri, 20 Mar 2020 15:02:30 GMT server: Apache strict-transport-security: max-age=31536000; includeSubDomains last-modified: Mon, 16 Mar 2020 04:20:59 GMT etag: "10f-5a0f1256f1402" accept-ranges: bytes content-length: 271 cache-control: public, max-age=864000 expires: Mon, 30 Mar 2020 15:02:30 GMT vary: Accept-Encoding x-xss-protection: 1; mode=block x-content-type-options: nosniff content-type: image/png via: 1.1 google alt-svc: clear
curl -s -D - -o /dev/null http://example.com/image.png
Output:
HTTP/2 200 date: Fri, 20 Mar 2020 15:03:11 GMT server: Apache strict-transport-security: max-age=31536000; includeSubDomains last-modified: Mon, 16 Mar 2020 04:18:31 GMT etag: "10f-5a0f11ca09b7a" accept-ranges: bytes content-length: 271 cache-control: public, max-age=864000 expires: Mon, 30 Mar 2020 15:03:11 GMT vary: Accept-Encoding x-xss-protection: 1; mode=block x-content-type-options: nosniff content-type: image/png via: 1.1 google alt-svc: clear