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ų:

DirektyvaKą ji daro
max-age=SEKUNDĖSKiek ilgai failas išlieka šviežias iki pakartotinio patikrinimo
publicBet kuri talpykla, įskaitant CDN, gali ją saugoti
privateTik vartotojo naršyklė gali ją talpinti, ne bendros talpyklos
no-cacheGali saugoti, bet turi pakartotinai patikrinti prieš kiekvieną naudojimą
no-storeNiekada netalpinti — jautriems ar suasmenintiems atsakams
immutableTurinys 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.

Patarimas: CDN prideda antrą talpinimo sluoksnį tarp jūsų serverio ir lankytojų. Naudokite 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

Patikrinkite savo svetainę pagal šį vadovą

Atlikite nemokamą ScanOpsPro patikrą ir pažiūrėkite, kaip jūsų svetainė tvarkosi su pagrindais.

Atlikti nemokamą patikrą