Τα βασικά του Web Caching : Ορολογία , Headers ,Τρόπος Λειτουργίας

24/07/2019 / Caching
web-caching
Τι είναι το Web Caching ;

To Web Caching είναι μία βασική δυνατότητα του πρωτοκόλλου HTTP που έχει ως στόχο να μειώνει το network traffic και να αυξάνει την απόκριση ενός συστήματος . 

Πως δουλεύει ;

Όταν ένας client A επισκέπτεται μια σελίδα , στέλνει στον server , που είναι αποθηκευμένη , ένα HTTP request και λαμβάνει από τον server ένα HTTP response .΄Αργότερα ο client B ‘ερχεται και κάνει στο server ακριβώς το ίδιο request .¨Ενας μηχανισμός caching , είναι ο μηχανισμός που θα αποθηκεύσει αυτό το response , σε ένα σύστημα πιο κοντά στο χρήστη από οτι το πίσω μέρος του server . Έτσι ενώ έχουν γίνει συνολικά 2 requests για τη σελίδα ,  στον backend server έχει φτάσει μόνο το ένα , ενώ το δεύτερο έχει ικανοποιηθεί αποκλειστικά απο τον μηχανισμό caching .  . Εδώ να σημειώσουμε οτι ένας μηχανισμός web caching μπορεί να είναι είτε λογισμικό , είτε υλικό . Πάμε να δούμε τώρα , γιατί είναι χρήσιμο το caching . 

Πλεονεκτήματα του Web Caching
  • Αυξημένη απόκριση Η cache είναι πιο κοντά στο χρήστη από ότι ο δίσκος του server που είναι αποθηκευμένο ένα αρχείο . ‘Ετσι όταν ο χρήστης πάρει το αρχείο απο την cache , αυτό σημαίνει ότι θα το πάρει γρηγορότερα .

  • Αυξημένη απόδοση ‘Οταν έχουμε χρήση cache , αυτό σημαίνει ότι ένας server μπορεί να ικανοποιήσει συνολικά πολύ περισσότερα αιτήματα από οτι θα μπορούσε χώρις αυτήν . Έτσι ‘εχουμε άυξηση στην απόδοση του .

  • Πρόσβαση σε περιεχόμενο ακόμα και όταν έχουμε διακοπές στο δίκτυο Αν για κάποιο λόγο ο backend server υποστεί κάποιο downtime , εφόσον η cache δουλεύει , οι clients θα μπορούν να λάβουν το περιεχόμενο που ζητάνε .

  • Μειωμένο network traffic Εφόσον η cache είναι πιο κοντά στο χρήστη , αυτό σημαίνει ότι η δραστηριότητα του στο δίκτυο θα καταναλώσει μικρότερο traffic , άρα συνολικά θα μειωθεί το traffic του δικτύου . 

Ορολογία
  • Origin Server Είναι ο server στον οποίο είναι αρχικά αποθηκευμένο το περιεχόμενο που ζητάμε , πριν γίνει το caching δηλαδή .

  • Cache hit ratio Χρησιμοποιείται για να μετρήσουμε , πόσα απο τα συνολικά αιτήματα που γίνονται σε έναν server , μπορούν να εξυπηρετηθούν απο την cache . ‘Οσο υψηλότερο το ratio , τόσο και περισσότερα τα requests που εξυπηρετουνται απο την cache και όχι από τον server .

  • Freshness Σε κάθε μηχανισμό cache υπάρχει μια ρύθμιση που ορίζει για πόση ώρα θα παραμείνει το περιεχόμενο αποθηκευμένο σε αυτή . Ένα δεδομένο θεωρείται fresh , όταν δεν έχει λήξει το χρονικό όριο για το οποίο θα παραμείνει αποθηκευμένο .

  • Stale Content Είναι το αντίθετο του fresh content . Αυτό το περιέχομενο έχει ξεπεράσει το χρονικό όριο και δεν είναι πια αποθηκευμένο στην cache . Αν κάποιος client κάνει ένα requests για αυτό το αντικείμενο , πρέπει να γίνει πάλι επαφή με τον origin server.

  • Validation Όταν έχουμε stale content στην cache , πρέπει να γίνει επικύρωση της (validation ) , ότι δηλαδή το περιεχόμενο της παραμενει έγκυρο σε σχέση με αυτό του origin server , άρα και το χρονικό όριο λήξης , μπορεί να ανανεωθεί .

  • Invalidation Είναι η διαδικασία διαγραφής περιεχομένου από την cache , πριν καν λήξει το χρονικό του όριου . Αυτό γίνεται γιατί έχουν γίνει αλλαγές στο περιεχόμενο στον origin server , για αυτό και η cache πρέπει να το διαγράψει και να το πάρει από την αρχή  .

Τι είδους περιεχόμενο μπορεί να αποθηκευτεί στην Cache ;
  • Εικόνες

  • Downloadable Content

  • Javascript αρχεία

  • Σελίδες HTML

  • Ευαίσθητο περιεχόμενο όπως πληροφορίες τραπέζης κλπ

  • Αρχεία Πολυμέσων

  • CSS

Που μπορεί να γίνει το caching ;
  • Browser Cache ‘Ολοι οι browsers έχουν μια μικρή cache . Το περιεχόμενο που αποθηκεύεται σε αυτή είτε ορίζεται απο το χρήστη , είτε είναι περιεχόμενο που ζητείται συχνά και είναι αρκετά μεγάλο για να γίνεται συνέχεια download .

  • Intermediary caching proxies Κάθε Server ανάμεσα στον client και στον origin server , μπορεί να κάνει caching όπως είναι επιθυμητό . Αυτές οι cache ελέγχονται είτε απο τους ISP  είτε απο τρίτους .

  • Reverse Cache Η γενικότερη υποδομή ενός server μπορεί να έχει τη δικιά του Cache , έτσι ώστε όταν γίνεται ένα request προς αυτόν , το respond να στέλνεται απο το σημείο επαφής του client με τον server και όχι από τον backend server .

Caching Headers 

Η πολιτική του caching , δηλαδή όλες οι αποφάσεις που αφορούν , το σε ποιο content θα γίνει caching , πόση διάρκεια θα έχει το caching κλπ , συνήθως γίνεται απο τον διαχειριστή του συστήματος . Ο διαχειριστής ρυθμίζει αυτές τις αποφάσεις , με τη χρήση των HTTP Headers . Ας δούμε μερικά headers που είναι χρήσιμο να ξέρουμε :

  • Expires Ορίζει μια ώρα κατα την οποία το content θα κανει expire στον μηχανισμό caching και θα πρέπει να γίνει η λήψη του από τον αρχικό server.

  • Cache-Control Είναι η πιό μοντέρνα έκδοση της Expire . Θα δούμε πιο αναλυτικά πως λειτουργεί παρακάτω .

  • Etag Το Etag Header χρησιμοποιείται για content validation . 

  • Last-Modifies Προσδιορίζει πότε ήταν η τελευταία αλλαγή που έγινε στο content

  • Content-Length Μερικά προγράμματα δεν μπορούν να κάνουν caching , αν δεν γνωρίζουν το μέγεθος του content εκ των πρωτέρων . Έτσι με το Content-Length το δηλώνουμε ως header για να γίνεται άμεσα γνωστό . 

  • Vary 

Cache-Control Flags

Το Header Cache-Control που είδαμε από πάνω , μπορεί να χρησιμοποιηθεί μαζί με μερικές ειδικές οδηγίες που λέγονται flags . Ας δούμε μερικές από αυτές :

  • No-cache Δηλώνει ότι το cached content πρέπει να γίνει revalidated κάθε φορα που αποστέλλεται σε έναν client . Εδω θα ρωτήσει κανείς , γιατί να χρησιμοποιούμε caching αν κάθε φορά πρέπει να επικοινωνούμε με τον server ? Γιατί υπάρχουν κάποιoi μηχανισμοί που επιτρέπουν το να γίνει το validation χωρίς να χρειαστεί να γίνει download όλο το content εξ αρχής . 

  • No-store Αυτή η εντολή δηλώνει οτι αυτό το περιεχόμενο δεν πρέπει να αποθηκευτεί στην cache . Συνήθως χρησιμοποιείται για προσωπικά δεδομένα .

  • Public   Δηλώνει το περιεχόμενο ως public , και άρα μπορεί να αποθηκευτεί στην cache του browser η και σε οποιαδήποτε intermediate cache . Κατά βάση το content που μεταφέρεται μέσω http έίναι πάντα private , εκτός αν το δηλώσουμε ως public με την παραπάνω εντολή .

  • Private Το αντίθετο της εντολής public . Το private content συνήθως είναι πιο προσωπικά δεδομένα , και επιτρέπει να γίνει caching μόνο στον browser του χρήστη και όχι σε ενδιάμεσους φοροίς . 

  • Max-age Δηλώνει το μέγιστο χρόνο που το περιεχόμενο μπορεί να μείνει στην cache , μεχρι να χρειαστεί να γίνει redownload ή revalidate άπό τον server . Ο χρόνος δίνεται σε δευτερόλεπτα με μέγιστη τιμή τα 31536000  δευτερόλεπτα (1 έτος ) .

  • S-maxage Λειτουργεί όπως και η max-age μόνο που ρυθμίζει τη διάρκεια μόνο για τις intermediate caches 

  • Must-revalidate Αυτη η οδηγία δηλώνει οτι οι χρονικοί περιορισμοί που τίθονται απο την max-age , s-maxage και την expire πρέπει να τηρηθούν υποχρεωτικά . Είναι χρήσιμη σε περιπτώσεις που έχουμε διακοπές δικτύου .

  • Proxy-revalidate Κάνει ότι και η απο πάνω μόνο που αφορά μόνο τους intermediate proxies , ενώ η must-revaldiate ισχύει καθολικά σε όλο το μηχανισμό της cache . 

  • No-transform Δηλώνει στην cache να μην κάνει ποτέ καμία αλλαγή στο περιεχόμενο αυτό . Για παράδειγμα μια cache για λόγους απόδοσης μπορεί υποθετικά να κάνει συμπίεση για να μικρύνει το μέγεθος των αρχείων . Με αυτή την εντολή το απαγορεύουμε αυτό . 

ΣΥΝΔΕΣΗ

Αίτηση επικοινωνίας

ΠΑΝΩ