Què és la memòria cau? Una guia en català senzill per a constructors d'aplicacions
Guardar memòria cau vol dir mantenir una còpia preparada d'alguna cosa que era lenta o cara d'obtenir, perquè la següent petició es pugui respondre ràpidament des d'aquesta còpia. La còpia desada s'anomena memòria cau (cache). El teu navegador guarda les imatges en memòria cau perquè un web carregui més ràpid la segona vegada que el visites; un servidor guarda el resultat d'una consulta lenta a la base de dades perquè no l'hagi d'executar per a cada visitant.
La memòria cau fa que les aplicacions siguin més ràpides i més barates d'executar. El seu gran inconvenient és que una còpia pot quedar desfasada.
Per què importa la memòria cau quan construeixes amb IA
Et trobaràs la memòria cau en aplicacions construïdes amb IA de tres maneres:
- «He actualitzat l'aplicació però encara veig la versió antiga». Aquest és el moment de memòria cau més habitual, i normalment és inofensiu: el navegador o una CDN mostra una còpia desada.
- Velocitat. Si una pàgina és lenta perquè recalcula els mateixos números per a cada visitant, guardar en memòria cau el resultat pot fer que sembli instantània.
- Cost. Molts constructors i hostings cobren per càlcul, temps de base de dades i crides a APIs externes. Si mil visitants disparen la mateixa petició cara, la memòria cau et permet pagar-la només una vegada.
Conèixer les bases et permet demanar memòria cau on ajudi i detectar-la quan sigui la causa d'alguna cosa que sembla errònia.
Una analogia del dia a dia
Pensa a la cuina d'un cafè concorregut.
Cada matí, el cuiner podria preparar cada cafè amb grans acabats de moldre quan es demana. Seria lent. En lloc d'això, té una gerra de cafè de filtre preparada a la placa calenta. La majoria de clients reben una tassa en segons: això és un encert de memòria cau. Quan s'acaba la gerra, algú en prepara una de nova: això és un fall de memòria cau.
Però el cafè que està massa estona es fa malbé, de manera que el cafè té una norma: tirar qualsevol gerra de més de 30 minuts. Aquesta norma és el temps de caducitat de la memòria cau. Ningú no mantindria la mateixa gerra tot el dia, i ningú no pre-prepararia la comanda personal d'algú amb llet d'avena i tres sucres: algunes coses no s'han de guardar mai.
On viuen les memòries cau
Una sola càrrega de pàgina pot passar per diverses memòries cau, de la més propera a l'usuari a la més llunyana:
| Memòria cau | On és | Què sol guardar | Exemple |
|---|---|---|---|
| Memòria cau del navegador | Al dispositiu del visitant | Imatges, fulls d'estil, scripts, tipografies | El logo es carrega a l'instant a la segona pàgina |
| Memòria cau de la CDN | Servidors de tot el món, a prop dels visitants | Fitxers estàtics i a vegades pàgines senceres | Un visitant a Tòquio rep els fitxers d'un servidor proper, no del teu servidor d'origen |
| Memòria cau de l'aplicació | Al servidor o al seu costat, sovint a la memòria o a Redis | Resultats de consultes lentes o crides a APIs externes | Els tipus de canvi d'avui, obtinguts una vegada cada hora |
| Memòria cau de la base de dades | Dins de la base de dades | Dades usades recentment i plans de consulta | Les files populars es mantenen en memòria ràpida |
Una CDN (xarxa de distribució de contingut) és, essencialment, una xarxa mundial de memòries cau per als fitxers del teu web.
Com decideix una memòria cau què guardar
Totes les memòries cau han de respondre les mateixes preguntes:
- Què es pot guardar? Dades públiques i compartides (la imatge d'un producte, una entrada del blog): sí. Dades privades (la pàgina del compte d'un usuari, els seus missatges): mai en una memòria cau compartida.
- Durant quant temps? Això és el TTL (time to live, temps de vida). Un logo es pot guardar un any; un nivell d'estoc, 30 segons.
- Com s'actualitza? O bé la còpia caduca i es torna a obtenir, o bé l'aplicació l'elimina deliberadament quan canvien les dades: això s'anomena invalidació.
Pels webs, el servidor indica als navegadors i a les CDN com guardar cada fitxer amb la capçalera Cache-Control. Per exemple, Cache-Control: max-age=3600 vol dir «pots reutilitzar aquesta còpia durant una hora».
Les eines de compilació modernes resolen la part més difícil dels fitxers estàtics amb el cache busting (trencament de memòria cau): cada vegada que un fitxer canvia, rep un nom nou amb una empremta digital, com app.3f9a2c.js. Els navegadors poden guardar el nom antic molt de temps, perquè la versió nova simplement té un nom diferent.
Un exemple pas a pas: un catàleg de productes
Tens una petita botiga en línia. La pàgina d'inici mostra 50 productes amb preus i nivells d'estoc de la base de dades, i una llista de «tendències» que requereix un càlcul lent sobre totes les comandes.
- Les imatges i els scripts els guarden en memòria cau el navegador i la CDN durant molt temps. Cada nova compilació dona noms nous als fitxers canviats, de manera que les actualitzacions segueixen apareixent.
- La llista de tendències es calcula una vegada cada 10 minuts i es guarda en una memòria cau de l'aplicació. Cada visitant durant aquests 10 minuts rep el resultat desat a l'instant.
- Els preus es guarden en memòria cau durant poc temps, i la memòria cau s'esborra cada vegada que edites un producte, perquè els clients mai no vegin un preu antic durant gaire estona.
- L'estoc al moment de pagar mai no es guarda. Quan algú fa clic a «Comprar», l'aplicació comprova la base de dades real, de manera que no pot vendre un article que acaba d'esgotar-se.
- Les pàgines del carro i del compte mai no es guarden en memòries cau compartides, perquè són personals.
El resultat: la pàgina d'inici és ràpida, la base de dades fa molta menys feina i res que importi per als diners o per a la privacitat queda mai desfasat.
Termes clau
| Terme | Significat |
|---|---|
| Encert / fall de memòria cau | Les dades es van trobar a la memòria cau / s'han d'obtenir de la font. |
| TTL (time to live) | Quant de temps es considera vigent una còpia desada. |
| Dades desfasades | Una còpia en memòria cau que ja no està al dia. |
| Invalidació | Eliminar deliberadament una còpia en memòria cau perquè l'original ha canviat. |
| Cache busting | Canviar el nom o la URL d'un fitxer quan canvia, perquè les memòries cau obtinguin la versió nova. |
| Cache-Control | La capçalera HTTP que indica als navegadors i a les CDN com guardar una resposta. |
| Recàrrega forçada | Tornar a carregar una pàgina dient al navegador que ignori la seva memòria cau. |
| Redis | Un magatzem de dades en memòria molt utilitzat, sovint com a memòria cau d'aplicació. |
Idees errònies habituals
- «La memòria cau sempre és bona». Guardar en memòria cau la cosa equivocada causa errors reals: preus antics, entrades noves que no apareixen o, en el pitjor dels casos, la pàgina privada d'un usuari mostrada a un altre. Guarda en memòria cau de manera deliberada.
- «Si veig la versió antiga, la meva actualització ha fallat». Normalment no. Prova una recàrrega forçada (Ctrl+Maj+R, o Cmd+Maj+R al Mac) o una finestra privada abans de donar per fet que alguna cosa està trencada.
- «La memòria cau arregla una aplicació lenta». Amaga la lentitud per a peticions repetides. La primera petició continua sent lenta, i si el problema de fons és un índex de base de dades que falta, també l'has d'arreglar.
- «Hauria de guardar-ho tot durant el màxim temps possible». Els temps llargs de memòria cau van bé per als fitxers que reben un nom nou quan canvien. Per a pàgines HTML i dades, els temps curts són més segurs.
- «Esborrar la meva memòria cau ho arregla per a tothom». Només esborra la teva memòria cau del navegador. Els visitants i les memòries cau de les CDN continuen tenint les seves pròpies còpies.
Què demanar al teu constructor d'IA
- «Quines parts d'aquesta aplicació són lentes i quines es podrien guardar en memòria cau amb seguretat?»
- «Guarda en memòria cau la [llista de tendències / resultat de l'API] durant [N] minuts, i esborra-la quan canviïn les dades de fons.»
- «Assegura't que cap pàgina amb dades personals o de compte pugui ser guardada en memòria cau per una CDN o una memòria cau compartida.»
- «Posa temps de memòria cau llargs per als fitxers estàtics amb empremta digital i curts per als HTML.»
- «Guarda en memòria cau les respostes de [API externa] perquè no la cridem a cada càrrega de pàgina, i digues-me quant poden quedar desfasades aquestes dades.»
- «Veig una versió antiga després de publicar. És la memòria cau del meu navegador o alguna cosa no s'ha desplegat?»
Memòria cau a Mythex
Després de publicar una actualització d'una aplicació de Mythex, la documentació indica que les memòries cau de la CDN poden trigar una estona a actualitzar-se, i que una recàrrega forçada de la URL pública mostra la versió nova; consulta Com publicar. La pàgina de Límits d'allotjament també recomana guardar en memòria cau els recursos estàtics, perquè l'allotjament, el temps de base de dades i l'ample de banda es paguen des del teu saldo de crèdits. Més enllà d'això —guardar en memòria cau resultats de consultes o respostes d'API— és quelcom que demanes a l'agent que construeixi a la teva aplicació.
Lectures relacionades: què és una CDN, com fer el teu web més ràpid i què és la limitació de freqüència.
Preguntes
Què és la memòria cau, en termes senzills?
Guardar memòria cau vol dir desar una còpia d'alguna cosa que era lenta o cara d'obtenir, perquè la propera vegada que es necessiti es pugui servir ràpidament des de la còpia desada. Els navegadors, les CDN, els servidors i les bases de dades fan servir memòries cau per fer les aplicacions més ràpides i més barates d'executar.
Per què encara veig la versió antiga del meu web després d'actualitzar-lo?
Probablement el teu navegador o una CDN està servint una còpia en memòria cau dels fitxers antics. Una recàrrega forçada (Ctrl+Maj+R a Windows, Cmd+Maj+R al Mac) normalment ho arregla. Pels visitants, els webs ben fets donen noms nous als fitxers actualitzats perquè les memòries cau descarreguin la versió nova automàticament.
Què fa esborrar la memòria cau?
Esborrar la memòria cau del navegador elimina les còpies desades de fitxers i pàgines que el navegador havia guardat, de manera que la propera vegada ho descarrega tot de nou. Pot arreglar pàgines que es veuen trencades o desactualitzades, i les pàgines tardaran una mica més a carregar-se la primera vegada després.
La memòria cau pot causar problemes?
Sí. El risc principal és servir dades desactualitzades —un preu antic, un nivell d'estoc que ja no és vigent— o, pitjor encara, guardar la pàgina privada d'un usuari i mostrar-la a una altra persona. Unes bones regles de memòria cau decideixen què es pot guardar i durant quant temps, i mai no guarden dades personals en memòries cau compartides.