Configurarea unei politici robuste de caching Cloudflare CDN este una dintre cele mai impactante sarcini de inginerie pentru optimizarea vitezei unui site web enterprise în 2026. Multe platforme web suferă de latență ridicată deoarece fiecare cerere a utilizatorului trebuie să ajungă la serverul de bază de date de origine pentru a reda paginile. Această dependență de origine întârzie metricile de viteză First Contentful Paint (FCP) și Largest Contentful Paint (LCP), în timp ce stocarea layout-urilor statice ale paginilor și a componentelor de tip asset în locații edge din întreaga lume oferă răspunsuri rapide, cu latență redusă, de la cea mai apropiată locație edge. Acest ghid detaliază mecanica de caching, regulile Edge Cache TTL și configurațiile dinamice de bypass pentru cookie-uri.
[!TIP] Sfat de optimizare a caching-ului: Evitați caching-ul paginilor HTML care conțin detalii ale utilizatorilor autentificați. Configurați întotdeauna Cache Rules pentru a ocoli caching-ul edge atunci când în antetele cererilor sunt detectate cookie-uri de sesiune specifice (precum cookie-urile WordPress sau token-urile de autentificare personalizate).
Concluzii cheie:
- Caching-ul Cloudflare CDN reduce interogările bazei de date către serverul backend, diminuând costurile de hosting.
- Cache Rules permit dezvoltatorilor să seteze valori TTL personalizate în funcție de tipurile de conținut și directoare.
- Implementarea regulilor Cache Everything necesită configurarea unor bypass-uri pentru cookie-urile de sesiune pentru a preveni scurgerile de date ale utilizatorilor.
- Servirea paginilor statice direct din locațiile edge ajută site-urile web să treacă testul Core Web Vitals pe dispozitivele mobile.
Configurații de caching: Page Rules vs. Cache Rules
Pentru a obține maximul din pipeline-urile de livrare, trebuie să alegeți modelul de control potrivit din dashboard. Conform ghidurilor de caching din Cloudflare Developer Docs , vechile Page Rules sunt înlocuite de Cache Rules modulare. Prin urmare, dezvoltatorii ar trebui să implementeze aceste configurații:
În mod implicit, rețelele CDN pun în cache doar formatele media, foile de stil și scripturile. În consecință, trebuie să configurați trei opțiuni de bază pentru asset-uri:
- Caching HTML: Pentru a obține încărcări instantanee ale paginilor, trebuie să instruiți CDN-ul să pună în cache structura documentului HTML. Astfel, acest lucru oprește interogările bazei de date.
- Antete Cache-Control: Configurați serverul backend Symfony sau PHP să trimită directive
s-maxagepersonalizate pentru a instrui serverele edge cât timp să stocheze paginile. În plus, acest lucru permite reguli TTL personalizate. - Browser Cache TTL: Setați durate de viață mai scurte pentru cache-ul browserului (de ex. 4 ore) pentru a vă asigura că utilizatorii primesc actualizări atunci când modificați layout-urile site-ului. În consecință, acest lucru previne problemele de nepotrivire a layout-ului.
Pentru portalurile web interactive, nu puteți pune în cache toate paginile universal. Prin urmare, trebuie să stabiliți două reguli dinamice de bypass:
- Bypass-uri de sesiune: Construiți reguli care instruiesc CDN-ul să ocolească caching-ul atunci când o cerere conține cookie-uri de autentificare sau de sesiune, astfel încât utilizatorii autentificați să primească întotdeauna răspunsuri personalizate, în timp ce vizitatorii anonimi sunt în continuare serviți din cache-ul de la edge.
- Sortarea query string-urilor: Configurați cache-ul bazei de date edge să ignore variabilele minore de analytics (precum tag-urile UTM) atunci când evaluează cheile de cache. În consecință, acest lucru previne fragmentarea cache-ului.
Pentru a implementa în siguranță o strategie de caching edge la nivel enterprise, parcurgeți această secvență tehnică de validare. Adoptați acești patru pași de optimizare:
- Auditați antetele HTTP: Verificați dacă serverul de origine trimite antete
Cache-ControlșiVarycurate, fără blocaje de autentificare. - Redactați Cache Rules modulare: Configurați Cache Rules țintite pentru a stoca directoarele de categorii statice până la 30 de zile.
- Construiți excepții de autentificare: Creați reguli care ocolesc cache-ul edge atunci când sunt detectate cookie-uri de login.
- Implementați webhook-uri Purge API: Configurați acțiunile de salvare în baza de date pentru a declanșa cereri Purge API automatizate atunci când actualizați paginile.
Comparație de performanță: caching edge vs. fetch de la origine
Pentru a ilustra beneficiile de viteză, tabelul următor detaliază metrici reale de încărcare:
| Metrică de performanță | Fetch de la serverul de origine (fără cache CDN) | Hit de cache edge (CDN activ) | Îmbunătățirea de viteză așteptată |
|---|---|---|---|
| Time to First Byte (TTFB) | 450 - 800 milisecunde | 15 - 35 milisecunde | Până la 95% mai rapid răspunsul inițial al serverului |
| LCP mobil (cea mai mare imagine) | 3.8 secunde (slab) | 1.4 secunde (bun) | Trece curat metricile Core Web Vitals |
| Încărcarea CPU-ului de origine | Ridicată (fiecare pagină interoghează baza de date) | Minimă (edge gestionează 90% din hit-uri) | Costuri de hosting reduse și stabilitate mai mare |
Cerințe preliminare
Înainte de a atinge dashboard-ul, asigurați-vă că aveți pregătite următoarele:
- Un domeniu deja trecut prin proxy-ul Cloudflare (setarea DNS cu nor portocaliu, nu gri/DNS-only).
- Acces la configurația de origine — Nginx, Apache sau stratul aplicației — pentru a putea seta antetele de răspuns.
- Un token API cu scope Zone → Cache Purge dacă intenționați să automatizați purge-urile. Creați-l în My Profile → API Tokens.
- O modalitate de a inspecta antetele HTTP brute:
curlîn linia de comandă sau tabul Network din Chrome DevTools. - Un URL de staging sau o cale cu trafic redus pe care puteți experimenta înainte de a implementa ceva la nivelul întregului site.
Un plan Free sau Pro este suficient pentru a urma fiecare pas de mai jos. Cache Rules sunt disponibile pe toate planurile, deși câteva opțiuni de cache-key și Tiered Cache sunt rezervate nivelurilor superioare.
Pasul 1: Trimiteți antete Cache-Control corecte de la origine
Cloudflare tratează un răspuns ca fiind cacheabil doar dacă originea nu o interzice activ. Cel mai frecvent motiv pentru care HTML-ul nu se pune niciodată în cache este o origine care returnează un antet Set-Cookie sau un Cache-Control restrictiv la fiecare cerere.
Setați directive explicite la origine. În Nginx:
1location ~* \.(css|js|woff2|jpg|png|webp|svg)$ {
2 add_header Cache-Control "public, max-age=31536000, immutable";
3}
4
5location / {
6 # HTML: short browser life, long shared (edge) life
7 add_header Cache-Control "public, max-age=0, s-maxage=86400";
8}
Directiva s-maxage vizează cache-urile partajate precum edge-ul Cloudflare, în timp ce max-age=0 menține browserul vizitatorului în stare de revalidare, astfel încât acesta să nu vadă niciodată HTML învechit după un deploy. Token-ul immutable de pe asset-urile cu fingerprint le spune browserelor să nu le revalideze deloc.
Pentru un răspuns generat de aplicație (PHP sau Symfony), exprimați aceeași intenție în cod:
1$response->setPublic();
2$response->setMaxAge(0); // browser
3$response->setSharedMaxAge(86400); // edge / s-maxage
Răspunsurile autentificate sau personalizate trebuie să se excludă explicit, altfel o regulă prea largă ar putea servi pagina unui utilizator altuia:
1Cache-Control: private, no-store
Pasul 2: Faceți HTML-ul eligibil pentru cache cu o Cache Rule
În mod implicit, Cloudflare marchează HTML-ul ca DYNAMIC și nu îl stochează niciodată. Pentru a schimba asta, creați o regulă în Caching → Cache Rules → Create rule.
Scrieți o expresie care se potrivește cu paginile pe care doriți să le puneți în cache, excluzând orice element dinamic:
1(http.host eq "example.com"
2 and not starts_with(http.request.uri.path, "/wp-admin")
3 and not starts_with(http.request.uri.path, "/cart")
4 and not starts_with(http.request.uri.path, "/checkout")
5 and not starts_with(http.request.uri.path, "/my-account"))
Apoi setați acțiunile regulii:
- Cache eligibility: Eligible for cache — echivalentul modern al vechiului comportament „Cache Everything".
- Edge TTL: Use cache-control header if present, astfel încât
s-maxage-ul setat la Pasul 1 să câștige; reveniți la o valoare fixă precum 1 zi dacă antetul lipsește. - Browser TTL: Respect origin.
Pasul 3: Adăugați un bypass pentru cookie-uri astfel încât utilizatorii autentificați să nu fie niciodată puși în cache
Acesta este pasul pe care majoritatea ghidurilor îl sar și cel care scurge date atunci când o fac. Adăugați o a doua regulă, plasată deasupra regulii de eligibilitate, care forțează un bypass ori de câte ori este prezent un cookie de sesiune autentic. Cloudflare evaluează Cache Rules de sus în jos, așa că o regulă de bypass anterioară câștigă întotdeauna pentru vizitatorii autentificați.
1http.cookie contains "wordpress_logged_in_"
2or http.cookie contains "wp-postpass_"
3or http.cookie contains "woocommerce_items_in_cart"
4or http.cookie contains "comment_author_"
Setați acțiunea pe Bypass cache. Pentru stive non-WordPress, înlocuiți numele cookie-urilor cu identificatorul de sesiune al framework-ului dvs. — PHPSESSID, laravel_session, connect.sid și așa mai departe. Definiți strict domeniul de aplicare: potrivirea aici a unui cookie de analytics larg precum _ga ar ocoli accidental cache-ul și pentru fiecare vizitator anonim.
Pasul 4: Normalizați cheia de cache
Două URL-uri care diferă doar printr-un parametru de tracking ar trebui să împartă un singur obiect din cache. În interiorul regulii de eligibilitate, deschideți Cache Key → Query String, alegeți Ignore specific query string parameters și listați cheile de analytics:
1utm_source, utm_medium, utm_campaign, utm_term, utm_content, fbclid, gclid
Acest lucru comasează /pricing?utm_source=newsletter și /pricing?gclid=123 într-o singură intrare din cache, ridicând rata de hit în loc să o fragmenteze în mii de chei aproape duplicate.
Cum să verificați un HIT sau MISS de cache
Nu presupuneți niciodată că o regulă funcționează — măsurați-o. Fiecare răspuns servit de Cloudflare poartă un antet cf-cache-status. Cereți același URL de două ori și urmăriți cum se schimbă:
1curl -sI https://example.com/ | grep -i cf-cache-status
2# First request: cf-cache-status: MISS
3# Second request: cf-cache-status: HIT
Valorile pe care le veți întâlni și ce înseamnă fiecare:
cf-cache-status | Semnificație | Ce să faceți |
|---|---|---|
| HIT | Servit direct de la edge | Funcționează conform intenției |
| MISS | Încă nu este în cache; preluat de la origine și acum stocat | Cereți din nou pentru a confirma că devine un HIT |
| DYNAMIC | Cloudflare l-a considerat necacheabil | Regula nu se potrivește sau originea interzice caching-ul |
| BYPASS | O regulă sau un bypass de cookie a sărit cache-ul | Așteptat la cererile autentificate |
| EXPIRED | TTL-ul a expirat, revalidat cu originea | Normal; măriți Edge TTL dacă se întâmplă prea des |
| REVALIDATED | Învechit, confirmat încă proaspăt prin ETag | Normal |
Dacă vedeți mereu doar DYNAMIC, regula de eligibilitate nu se declanșează. Confirmați numele de host din expresie, apoi verificați dacă originea nu trimite Cache-Control: private sau un Set-Cookie pe documentul HTML.
Capcane frecvente și depanare
- Un
Set-Cookiela fiecare răspuns. Cloudflare nu va pune în cache un răspuns care setează un cookie. Plugin-urile de analytics, token-urile CSRF și instrumentele de testare A/B atașează frecvent unul la documentul HTML. Mutați acea logică într-o cerere asincronă sau eliminați antetul pe căile cacheabile. BYPASSla vizitatorii anonimi. Aproape întotdeauna o regulă de bypass de cookie prea largă — un cookie generic precum_gacare se potrivește cu expresia dvs. Restrângeți bypass-ul doar la cookie-urile de sesiune reale.- Pagini învechite după un deploy. Edge TTL-ul își face treaba; pur și simplu ați uitat să faceți purge. Declanșați un purge țintit la publicare în loc să scurtați TTL-ul la câteva secunde.
- Antetele Vary ignorate. Cloudflare variază cache-ul doar pe
Accept-Encoding; nu va păstra copii separate pentru unVary: User-AgentsauVary: Cookiearbitrar. Serviți markup specific dispozitivului prin CSS responsive sau un Worker, în loc să vă bazați pe Vary. - Development Mode lăsat pornit. Ocolește cache-ul timp de trei ore și face în tăcere ca fiecare răspuns să pară necacheabil. Confirmați că este oprit înainte de a testa.
Considerații de producție și purge automatizat
Odată ce o singură cale se comportă corect, extindeți regula la întregul site într-o fereastră cu trafic redus și urmăriți în Caching → Overview rata de hit — un site static sănătos se situează confortabil peste 90%.
Conectați CMS-ul dvs. să facă purge doar la ceea ce s-a schimbat, nu la întreaga zonă. Un purge țintit după URL menține paginile învecinate calde în cache:
1curl -X POST \
2 "https://api.cloudflare.com/client/v4/zones/${ZONE_ID}/purge_cache" \
3 -H "Authorization: Bearer ${CF_API_TOKEN}" \
4 -H "Content-Type: application/json" \
5 --data '{"files":["https://example.com/pricing"]}'
Apelați acest lucru din hook-ul de publicare, astfel încât actualizarea unui editor să devină live în câteva secunde, în timp ce restul rămâne în cache. Pentru cataloage mari, grupați URL-urile înrudite în spatele unui Cache Tag (Enterprise) sau faceți purge după prefix și activați Tiered Cache pentru a ridica rata de hit globală prin rutarea miss-urilor printr-un parent regional înainte ca acestea să ajungă vreodată la originea dvs.
Colaborați cu o consultanță Cloudflare din UK, verificată
Luarea corectă a acestor decizii de caching vă protejează serverele de origine și accelerează livrarea paginilor pentru fiecare vizitator. Mecanik oferă servicii profesionale de audit tehnic SEO și scalare a infrastructurii prin pagina noastră de dezvoltare web . Suntem specializați în integrări edge Symfony, Cache Rules Cloudflare personalizate și implementări edge-native. Contactați-ne astăzi pentru a programa workshop-ul dvs. tehnic de scoping.
Întrebări frecvente (FAQ)
Ce este cloudflare cdn caching? Cloudflare cdn caching este procesul de stocare a unor copii statice ale paginilor, imaginilor și fișierelor script ale site-ului dvs. pe servere edge situate în întreaga lume. Această configurație permite ca cererile utilizatorilor să fie servite de la cel mai apropiat server fizic, reducând timpii de încărcare ai site-ului.
Cum pun în cache pagini HTML fără a scurge datele utilizatorilor? Pentru a pune în cache HTML-ul în siguranță, configurați o Cache Rule cu o acțiune „Bypass Cache" care se declanșează atunci când cookie-urile de sesiune sau de admin sunt prezente în antetele cererilor. Această configurare asigură că utilizatorii autentificați ai portalului preiau întotdeauna conținut dinamic din baza de date de origine.
Care este diferența dintre Edge TTL și Browser TTL? Edge TTL (Time-To-Live) dictează cât timp serverele CDN Cloudflare vă stochează conținutul înainte de a solicita o copie proaspătă de la serverul de origine. Dimpotrivă, Browser TTL determină cât timp cache-ul local al browserului vizitatorului păstrează fișierele.
De ce afectează caching-ul query string-urilor performanța site-ului? Dacă query string-urile (precum tag-urile de tracking UTM) nu sunt normalizate, CDN-ul tratează fiecare variantă ca pe un URL unic, generând cereri duplicate către serverul dvs. de origine. Configurarea normalizării cheii de cache previne această duplicare a crawl-ului.
Poate caching-ul edge să îmbunătățească scorurile mele Core Web Vitals? Da, servirea asset-urilor HTML și media direct de la serverele edge minimizează timpii Time-to-First-Byte (TTFB) și Largest Contentful Paint (LCP). În consecință, această strategie de caching vă îmbunătățește direct clasamentul vitezei paginii pe mobil.
Comentarii