Backend · Άρθρο
Τι είναι το caching;
Ένα ερώτημα σε βάση δεδομένων που παίρνει 200ms δεν χρειάζεται να ξανατρέξει αν η απάντηση δεν άλλαξε. Το caching είναι ακριβώς αυτό: αποθηκεύεις ένα αποτέλεσμα κάπου γρήγορο, και την επόμενη φορά το επιστρέφεις από εκεί αντί να το ξαναϋπολογίσεις από την αρχή.
Το πρόβλημα που λύνει
Κάποιες λειτουργίες είναι ακριβές: ένα query σε μεγάλο πίνακα, ένα κάλεσμα σε εξωτερικό API, ένας βαρύς υπολογισμός. Αν χίλιοι χρήστες ζητήσουν το ίδιο πράγμα μέσα σε ένα λεπτό, δεν έχει νόημα να το υπολογίσεις χίλιες φορές — μία φορά αρκεί, οι υπόλοιπες παίρνουν την αποθηκευμένη απάντηση.
Πού μπαίνει η cache
Σε πολλά επίπεδα ταυτόχρονα: ο browser κρατάει εικόνες και scripts τοπικά, ένα CDN κρατάει στατικά αρχεία κοντά στον χρήστη, ένας server κρατάει έτοιμες απαντήσεις σε μνήμη (π.χ. με Redis), και μια βάση δεδομένων έχει τη δική της εσωτερική cache για συχνά queries.
Cache invalidation
Το δύσκολο κομμάτι δεν είναι να αποθηκεύσεις — είναι να ξέρεις πότε η αποθηκευμένη απάντηση έχει πλέον μπαγιατέψει. Δύο βασικές τακτικές: βάζεις μια λήξη (TTL — «ισχύει για 60 δευτερόλεπτα») ή σβήνεις χειροκίνητα την cache τη στιγμή που κάτι αλλάζει. Το πρώτο είναι απλούστερο, το δεύτερο πιο ακριβές.
Πότε δεν κάνει caching
Δεδομένα που αλλάζουν συνέχεια και πρέπει να είναι πάντα φρέσκα — υπόλοιπο τραπεζικού λογαριασμού, stock σε real time — δεν μπαίνουν σε cache, ή μπαίνουν για ελάχιστο χρόνο. Caching σημαίνει «λίγο παλιά δεδομένα με αντάλλαγμα ταχύτητα» — αν δεν αντέχεις καθόλου καθυστέρηση στη φρεσκάδα, δεν είναι για αυτή την περίπτωση.
Με λίγα λόγια
- Caching = αποθήκευση μιας απάντησης για να μην υπολογιστεί ξανά από την αρχή.
- Υπάρχει σε πολλά επίπεδα: browser, CDN, server, βάση δεδομένων.
- Το δύσκολο κομμάτι είναι το invalidation — το πότε θεωρείς κάτι μπαγιάτικο.
- Δεν ταιριάζει σε δεδομένα που πρέπει να είναι πάντα 100% φρέσκα.
Σχόλια · 0