dev · · 21:09 · 2 min de citit
Cloudflare a pus în cache paginile noastre 404: De ce o pagină nouă returna 404 după un deploy reușit
Un deploy reușit al unei noi pagini de destinație pe Escrozon a cauzat vizitatorilor să primească erori 404 timp de aproape o oră, deoarece Cloudflare pusese în cache răspunsul inițial 404. Problema a apărut din cauza solicitării URL-ului public înainte ca pagina să existe, determinând cache-ul edge al Cloudflare să servească un răspuns 404 învechit până la expirarea TTL-ului său.
Echipa de dezvoltare de la Escrozon, o piață de escrow pentru active digitale, s-a confruntat cu o eroare persistentă 404 pentru o pagină de destinație nou implementată, deși serverul confirma un deploy reușit. Această problemă a persistat timp de aproximativ o oră, afectând accesul utilizatorilor. Cauza principală a fost identificată ca fiind mecanismul de caching al Cloudflare; în mod specific, o solicitare inițială pentru noul URL, înainte ca pagina să fie activă, a returnat un 404, pe care Cloudflare l-a pus apoi în cache cu un TTL de o oră (s-maxage=3600). În consecință, chiar și după finalizarea deploy-ului și servirea corectă a paginii de către serverul de origine cu un status 200, Cloudflare a continuat să servească răspunsul 404 din cache vizitatorilor până la expirarea cache-ului.
Pentru a diagnostica problema, echipa a examinat headerele de răspuns folosind `curl -sI`, căutând indicatori precum `cf-cache-status: HIT` și `age`-ul răspunsului din cache în raport cu `s-maxage`-ul său. Un pas cheie de diagnosticare a implicat adăugarea unui șir de interogare pentru a ocoli cache-ul (`?cb=1`) la URL; un răspuns 200 cu șirul de interogare și un 404 fără acesta a confirmat că serverul de origine servea pagina corect și doar copia din cache era învechită. Echipa a observat, de asemenea, că Tiered Cache-ul Cloudflare putea duce la experiențe inconsistente pentru utilizatori, vizitatorii din regiuni diferite primind răspunsuri diferite.
Au fost implementate mai multe soluții pentru a rezolva problema imediată și a preveni repetarea. Acestea au inclus ștergerea URL-ului specific din cache-ul Cloudflare prin dashboard sau API, sau așteptarea expirării TTL-ului. Pentru a preveni aparițiile viitoare, echipa a recomandat evitarea solicitărilor către URL-uri publice înainte de deploy, configurarea regulilor de cache Cloudflare pentru a atribui TTL-uri foarte scurte sau deloc cache pentru răspunsurile 404, integrarea ștergerii cache-ului în scripturile de deploy și asigurarea respectării headerelor serverului de origine (cum ar fi Browser Cache TTL) peste setările implicite ale Cloudflare. Înțelegerea precedenței regulilor Cloudflare față de headerele serverului de origine a fost crucială.
$ sursa --originală
dev.to
Rezumat realizat de Sudofeed pe baza articolului original. Drepturile asupra conținutului aparțin sursei originale.