Kalo te përmbajtja
SEO Analyzer

Performancë

Kokat e cache-it të shfletuesit

A i thotë serveri shfletuesit sa gjatë ta ruajë përgjigjen; mjeti kërkon Cache-Control, ETag ose Expires.

Çfarë është

Kokat e cache-it i thonë shfletuesit nëse dhe sa gjatë mund ta ruajë një përgjigje për ta ripërdorur pa e kërkuar sërish.

Tri kokat kryesore bëjnë punë të ndryshme. Cache-Control përcakton politikën: sa sekonda është e freskët, a mund ta ruajnë ndërmjetësit, a duhet rivaliduar. ETag jep një gjurmë të përmbajtjes që lejon shfletuesin të pyesë "a ka ndryshuar?" dhe të marrë një përgjigje 304 pa trup. Expires është forma e vjetër e Cache-Control: max-age dhe sot përdoret vetëm si rezervë.

Politika e duhur ndryshon sipas burimit: HTML-ja duhet rivaliduar shpesh, ndërsa një skedar CSS me hash në emër mund të ruhet një vit.

Pse ka rëndësi

Pa cache, çdo vizitë e dytë shkarkon gjithçka nga fillimi: logon, stilet, skriptet, fontet. Për një vizitor që hap pesë faqe të sajtit, kjo do të thotë pesë shkarkime të të njëjtave skedarë.

Efekti është më i dukshëm te navigimi brenda sajtit dhe te kthimet. Faqja e parë ka të njëjtën shpejtësi; e dyta mund të jetë disa herë më e shpejtë.

Ka edhe efekt te serveri: kërkesa që nuk bëhen nuk kushtojnë as bandë as procesor.

Gabimi i kundërt kushton po aq: një cache shumë i gjatë mbi HTML-në do të thotë se ndryshimet nuk shihen nga vizitorët e vjetër për ditë të tëra. Dhe një cache i gjatë mbi një skedar CSS pa hash në emër do të thotë se përditësimi i dizajnit nuk arrin.

Si rregullohet

# HTML — rivalidohet gjithnjë
location ~* \.html?$ { add_header Cache-Control "no-cache"; }

# burime me hash në emër — një vit, të pandryshueshme
location ~* \.(css|js|woff2)$ { add_header Cache-Control "public, max-age=31536000, immutable"; }

Hapat:

  • Vendos hash në emrat e skedarëve statikë (app.7f3a91.css). Atëherë cache-i i gjatë është i sigurt, sepse emri i ri është URL e re.
  • `no-cache` për HTML do të thotë "ruaje, por pyet para se ta përdorësh" — jo "mos e ruaj".
  • `immutable` e kursen edhe pyetjen për burime që nuk ndryshojnë kurrë.
  • Mos përdor `no-store` veçse për përgjigje me të dhëna personale.
  • Kujdes me CDN-në: public lejon ruajtjen te ndërmjetësit; private jo.

Si e mat ky mjet

PerformanceAnalyzer::checkCacheHeaders() (services/PerformanceAnalyzer.php:100) kontrollon nëse ekziston ndonjëra nga tri kokat: cache-control, etag ose expires. Dy dalje: ekziston së paku njëra (:107, kaluar), asnjëra (:109, paralajmërim).

Çfarë NUK e mat

Kontrolli sheh vetëm praninë e kokës, jo vlerën e saj. Një Cache-Control: no-store — që e ndalon plotësisht cache-in — kalon si "cache i konfiguruar", njësoj si një politikë e menduar mirë. Kjo është mospërputhje e drejtpërdrejtë midis asaj që raportohet dhe asaj që ndodh.

Matet vetëm dokumenti HTML. Burimet statike — CSS, JavaScript, fonte, imazhe — ku cache-i ka ndikimin më të madh, nuk kontrollohen fare.

Nuk vlerësohet as përputhshmëria e politikës me llojin e burimit, as prania e hash-it në emrat e skedarëve, as sjellja reale e rivalidimit.

Mospërputhje midis tekstit të analizuesit dhe matjes

Kjo faqe ndjek matjen, jo tekstin që prodhon analizuesi.
Teksti i analizuesitÇfarë ndodhSi u matBurimi
Cache headers are set — Browser caching is configured.Kontrollohet vetëm prania e çelësit; vlera nuk lexohet. no-store e ndalon plotësisht cache-in.Kushti te :102 përdor isset mbi tri koka.matur gjatë 5.10services/PerformanceAnalyzer.php:100

Kodi që e kryen matjen

  • services/PerformanceAnalyzer.php:100PerformanceAnalyzer::checkCacheHeaders
  • services/PerformanceAnalyzer.php:109no_cache

Standardi