CLOUD CONCEPT
Νερατζιωτίσσης 15, Μαρούσι, Αθήνα, 15124, Αττική
+30 211 8005 401
info@c2.gr
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 .
Αυξημένη απόκριση Η 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 πρέπει να το διαγράψει και να το πάρει από την αρχή .
Εικόνες
Downloadable Content
Javascript αρχεία
Σελίδες HTML
Ευαίσθητο περιεχόμενο όπως πληροφορίες τραπέζης κλπ
Αρχεία Πολυμέσων
CSS
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 , δηλαδή όλες οι αποφάσεις που αφορούν , το σε ποιο 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
Το 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 για λόγους απόδοσης μπορεί υποθετικά να κάνει συμπίεση για να μικρύνει το μέγεθος των αρχείων . Με αυτή την εντολή το απαγορεύουμε αυτό .