Quick CloudFai la domanda "nuovo utente" per te:
BACKGROUND: Le pagine HTML fornite dal mio server di origine non cambiano mai. Tutto il contenuto dinamico viene scaricato tramite JavaScript dopo che la pagina è stata caricata nel browser dell'utente. Il contenuto dinamico derivato da JavaScript dipende in parte dalla stringa di query dell'URL, ma la stringa di query stessa non ha alcun effetto sul contenuto HTML scaricato originariamente. Pertanto, i seguenti URL generano esattamente lo stesso HTML dall'origine prima di essere influenzati da JavaScript nel browser:
https://www.example.com/private/my-investments?portfolioID=296
https://www.example.com/private/my-investments?portfolioID=325
https://www.example.com/private/my-investments?portfolioID=319
DOMANDA: Dato che CloudFlare non memorizza nella cache HTML di default, come devo costruire le mie regole di pagina in modo che una singola copia cache di https://www.example.com/private/my-investments?[anyValue] venga restituita a tutti gli utenti ? Ecco cosa ho provato:
"CACHE EVERYTHING:" L'uso della direttiva "Cache Everything" fa sì che il mio HTML venga memorizzato nella cache (buono) ma utilizza l'intera stringa di query come parte della chiave della cache (cattivo). Quindi se un utente colpisce il seguente URL ...
https://www.example.com/private/my-investments?portfolioID=296
... e poi dieci secondi dopo colpisce lo stesso URL con una stringa di query diversa, come:
https://www.example.com/private/my-investments?portfolioID=325
... CloudFlare considera quest'ultima richiesta come cache MISS (cf-cache-status: MISS) e colpisce di nuovo il mio server di origine. Ciò nonostante il fatto che il codice HTML restituito dall'origine sia identico per entrambi gli URL.
"IGNORE QUERY STRING CACHING:" Ho pensato di certo a risolvere questo problema selezionando l'opzione "IGNORE QUERY STRING CACHING". Ma quando si utilizza questa opzione in una regola di pagina, nessun HTML viene memorizzato nella cache; Vengono memorizzati nella cache solo i file .js, .css e .png. E ancora una volta la mia origine viene colpita per ogni singola chiamata per i dati HTML. :(
Mi sento come se mi mancasse qualcosa di ovvio. qualche idea?
AGGIORNAMENTO : Ho avuto un'idea che volevo correre da te. Posso risolvere questo problema modificando il mio schema URL interno per utilizzare "#" anziché "?" Quindi invece di un URL come ...
https://www.example.com/private/my-investments?portfolioID=296
.. Userei qualcosa del tipo:
https://www.example.com/private/my-investments#portfolioID=296
Ciò impedirebbe la trasmissione a CloudFlare dei parametri della stringa di query ... Cosa ne pensi?
Festus