Naršyklės talpykla ir Cache-Control paaiškinimas
Naršyklės talpinimas leidžia lankytojo naršyklei laikyti vietinę jūsų failų kopiją — paveikslėlių, stilių lentelių, scenarijų — kad pakartotiniai apsilankymai juos įkeltų iš disko, o ne siųstųsi iš naujo. Padarius gerai, antri ir vėlesni puslapio peržiūrėjimai atrodo momentiniai. Visą sistemą valdo kelios HTTP antraštės, pirmiausia Cache-Control.
Trumpai
Naudokite Cache-Control, kad nurodytumėte naršyklėms, kiek ilgai jos gali pakartotinai naudoti failą. Statinius išteklius talpinkite agresyviai su ilgu max-age ir immutable, o jų failų pavadinimuose įrašykite versiją, kad pakeitimas priverstų atsisiųsti iš naujo. HTML laikykite trumpoje talpykloje arba pakartotinai patikrinkite. ETag tvarko efektyvų pakartotinį patikrinimą. Atlikite patikrą, kad pamatytumėte savo dabartines talpinimo antraštes.
Kaip naršyklė nusprendžia
Kai naršyklei reikia jau talpykloje esančio failo, ji patikrina, ar talpykloje esanti kopija vis dar „šviežia“. Jei taip, naršyklė naudoja vietinę kopiją visai be tinklo užklausos — greičiausias įmanomas rezultatas. Jei ji gali būti pasenusi, naršyklė klausia serverio, ar kas nors pasikeitė. Cache-Control antraštė nustato to sprendimo taisykles.
Cache-Control direktyvos
Cache-Control yra viena antraštė, nešanti vieną ar daugiau direktyvų:
| Direktyva | Ką ji daro |
|---|---|
max-age=SEKUNDĖS | Kiek ilgai failas išlieka šviežias iki pakartotinio patikrinimo |
public | Bet kuri talpykla, įskaitant CDN, gali ją saugoti |
private | Tik vartotojo naršyklė gali ją talpinti, ne bendros talpyklos |
no-cache | Gali saugoti, bet turi pakartotinai patikrinti prieš kiekvieną naudojimą |
no-store | Niekada netalpinti — jautriems ar suasmenintiems atsakams |
immutable | Turinys niekada nesikeis, todėl pakartotinis patikrinimas praleidžiamas |
Praktinė strategija
Gudrybė — su dviejų rūšių turiniu elgtis skirtingai.
Statiniai ištekliai: talpinkite tvirtai, versijuokite failų pavadinimus
Stilių lentelės, scenarijai ir paveikslėliai retai keičiasi, todėl talpinkite juos metams ir pažymėkite kaip immutable:
Cache-Control: public, max-age=31536000, immutable
Kad pateiktumėte atnaujinimą, pakeiskite failo pavadinimą — pavyzdžiui app.4f2a1c.css — kad naujas puslapis nurodytų naują URL, kurio naršyklė niekada netalpino. Būtent šis „talpyklos anuliavimas“ per versijavimą leidžia talpinti agresyviai niekada nepateikiant pasenusio ištekliaus. Dauguma kūrimo įrankių maišą prideda automatiškai.
HTML: laikykite trumpalaikį
HTML keičiasi kaskart pasikeitus turiniui ir nurodo jūsų versijuotus išteklius, todėl neturėtų būti talpinamas ilgai. Trumpas max-age arba no-cache su pakartotiniu patikrinimu išlaiko puslapius aktualius:
Cache-Control: no-cache
ETag ir pakartotinis patikrinimas
ETag yra pirštų atspaudas, kurį serveris prideda prie failo. Kai talpykloje esančią kopiją reikia patikrinti iš naujo, naršyklė grąžina ETag su If-None-Match. Jei failas nepakitęs, serveris atsako 304 Not Modified be turinio — tai mažytis atsakas, taupantis viso failo atsisiuntimą iš naujo. Last-Modified su If-Modified-Since veikia taip pat, naudodama laiko žymes. ETag naudingiausi HTML ir kitam turiniui, kurį tikrinate iš naujo, o ne talpinate kaip immutable.
public, kad kraštas galėtų talpinti bendrus išteklius, ir derinkite ilgą išteklių talpinimą su failų pavadinimų versijavimu geriausiam rezultatui. Žiūrėkite mūsų CDN vadovą ir greičio testą.Dažniausiai užduodami klausimai
Ar ilgas talpinimas nesutrukdys vartotojams matyti atnaujinimų?
Ne, jei versijuojate failų pavadinimus. HTML po kiekvieno pakeitimo nurodo naują ištekliaus URL, todėl naršyklės iškart atsisiunčia atnaujinimą, kartu ilgai talpindamos nepakitusius failus.
Naudoti Cache-Control ar Expires?
Rinkitės Cache-Control. Ji naujesnė, išraiškingesnė ir turi pirmenybę prieš senesnę Expires antraštę, kai yra abi.
Ko niekada nereikėtų talpinti?
Bet ko suasmeninto ar jautraus — paskyros puslapių, krepšelio turinio, autentifikuotų API atsakų. Naudokite Cache-Control: no-store, kad jokia talpykla nelaikytų kopijos.
Susiję vadovai
Kas yra TTFB (laikas iki pirmojo baito)?
Ką matuoja „laikas iki pirmojo baito“, kas laikoma geru rezultatu ir dažniausios lėto TTFB priežastys.
Skaityti →Našumas ir Core Web Vitals„Core Web Vitals“ paaiškinimas ne programuotojams
LCP, INP ir CLS paprastai — ką matuoja „Google“, kokios ribos ir kaip tai veikia reitingus.
Skaityti →Našumas ir Core Web VitalsKaip pagerinti LCP (Largest Contentful Paint)
Praktiniai, pagal svarbą sudėlioti žingsniai, kaip LCP sumažinti iki mažiau nei 2,5 sekundės.
Skaityti →Patikrinkite savo svetainę pagal šį vadovą
Atlikite nemokamą ScanOpsPro patikrą ir pažiūrėkite, kaip jūsų svetainė tvarkosi su pagrindais.
Atlikti nemokamą patikrą