Πόσες φορές έχετε συναντήσει ένα άρθρο που προτείνει τρόπους βελτίωσης της ταχύτητας του website σας; Σίγουρα θα έχετε βαρεθεί να διαβάζετε τέτοια άρθρα, μιας και σχεδόν όλα αναφέρονται στις ίδιες, κλασικές συμβουλές και ανακυκλώνουν τα ίδια “κόλπα”. Ήρθε η ώρα λοιπόν για κάτι καινούριο… Σε αυτό το άρθρο θα διαβάσετε για το HTTP/2!
Τι είναι το HTTP και γιατί χρειαζόμαστε το HTTP/2;
To HTTP (Hyper Text Transfer Protocol) είναι ο τρόπος επικοινωνίας του browser με τον web server. Με πολύ απλά λόγια, το HTTP είναι η “γλώσσα” που χρησιμοποιεί ο web server και ο browser για να “μιλήσουν” μεταξύ τους. Σε αυτό το άρθρο όμως, δεν θα εμβαθύνουμε στο τι είναι και πως δουλεύει το HTTP. ΟK, ίσως λίγο ακόμα!
Το πρωτόκολλο επικοινωνίας HTTP τεκμηριώθηκε για πρώτη φορά το 1991 ως έκδοση 0.9. Μιλάμε δηλαδή για παραπάνω από 25 χρόνια πριν, κάτι που για την τεχνολογία είναι τεράστιο χρονικό διάστημα. Εκείνη την εποχή λοιπόν, ένα σύγχρονο website ήταν κάπως έτσι:
Όπως καταλαβαίνετε, σήμερα έχουν αλλάξει πολλά (πάρα πολλά)! Το μέγεθος ενός απλού website από μερικά kilobytes, πλέον αυξήθηκε σε μερικά megabytes, ενώ τα αρχεία που το αποτελούν, από μετρημένα στα δάχτυλα, πλέον μπορεί να είναι εκατοντάδες. Αυτή η αύξηση στο μέγεθος και το πλήθος των αρχείων, έφερε στην επιφάνεια τους περιορισμούς που έχει το πρωτόκολλο HTTP, οι οποίοι ευθύνονται για την καθυστέρηση και την μειωμένη ταχύτητα φόρτωσης ενός website.
Το HTTP/2 αποτελεί την εξέλιξη του HTTP και δημιουργήθηκε με στόχο την εξάλειψη των παραπάνω περιορισμών. Πριν όμως εξηγήσουμε τι προβλήματα λύνει το HTTP/2, θα μιλήσουμε για τα προβλήματα του HTTP.
Οι περιορισμοί του HTTP
Όπως διαβάσατε παραπάνω, το HTTP έχει αρκετούς περιορισμούς, οι οποίοι ήρθαν στην επιφάνεια λόγω της αύξησης της πολυπλοκότητας και του μεγέθους των σύγχρονων websites. Ρίχνοντας μια ματιά στον κώδικα του website της παραπάνω εικόνας, παρατηρούμε ότι ολόκληρο το website είναι κατασκευασμένο με τη χρήση μόλις δύο αρχείων. Όλο το περιεχόμενό του περιέχεται στο αρχείο index.html και το μοναδικό επιπλέον αρχείο, είναι ένα αρχείο εικόνας. Αυτό σημαίνει ότι για τη φόρτωση του website, ο browser πρέπει να κάνει μόλις δύο connections με τον web server.
Σε ένα σύγχρονο website, υπάρχουν δεκάδες ή εκατοντάδες διαφορετικά αρχεία και ο browser είναι αναγκασμένος να “ζητάει” από τον web server κάθε αρχείο ξεχωριστά. Αυτό σημαίνει ότι πρέπει να κάνει εκατοντάδες connections με τον web server! Κάθε connection αποτελεί σημαντική τεχνική επιβάρυνση. Φανταστείτε τι συμβαίνει με τα εκατοντάδες connections!
Για την αντιμετώπιση αυτού του προβλήματος, δύο είναι οι βασικές λύσεις:
- Μείωση της καθυστέρησης, συνδυάζοντας όσο το δυνατόν περισσότερα αρχεία, σε λιγότερα αρχεία (π.χ. combine 10 CSS αρχεία, σε 2 CSS αρχεία), απαιτώντας έτσι λιγότερα αιτήματα (HTTP requests).
- Μείωση του μεγέθους των δεδομένων που αποστέλλονται μεταξύ του browser και του web server (π.χ. compress και minify των CSS και JS αρχείων που αποτελούν το website).
Πως λοιπόν ένα website που χρησιμοποιεί το HTTP/2 γίνεται ταχύτερο;
Αν θέλετε να κατανοήσετε τις ακριβείς προδιαγραφές, μπορείτε να επισκεφτείτε το HTTP/2 Github FAQ. Αν όμως σας ενδιαφέρει να μάθετε τις βελτιώσεις που προσφέρει το HTTP/2 σε σχέση με το HTTP, χωρίς πολύ τεχνικούς όρους, μπορείτε να συνεχίσετε να διαβάζετε αυτό το άρθρο!
1) Το HTTP/2 επιτρέπει την ταυτόχρονη μεταφορά πολλαπλών αρχείων.
Φανταστείτε έναν σερβιτόρο σε ένα εστιατόριο, ο οποίος μεταφέρει μόνο ένα πιάτο και αφού το παραδώσει στον πελάτη, είναι αναγκασμένος να γυρίσει πίσω στην κουζίνα, ώστε να πάρει ένα νέο πιάτο, να το μεταφέρει επίσης στον πελάτη και να επαναλάβει αυτή τη διαδικασία μέχρι να μεταφέρει όλη την παραγγελία. Αυτό ακριβώς συμβαίνει με το HTTP, το οποίο μπορεί να επεξεργαστεί ένα αίτημα τη φορά, απαιτώντας έτσι πολλά connections για να φορτώσει ένα website. Το HTTP/2 όμως επιτρέπει την ταυτόχρονη και παράλληλη μεταφορά πολλών αρχείων με ένα μόλις connection (Multiplexing). Ο σερβιτόρος του προηγούμενου παραδείγματος, μπορεί τώρα να μεταφέρει παραπάνω από ένα πιάτο τη φορά! Σκεφτείτε πόσο πιο γρήγορη, ξεκούραστη και αποτελεσματική γίνεται η δουλειά του…
2) Το HTTP/2 επιτρέπει στον web server να στείλει στον browser αρχεία που προβλέπει ότι θα χρειαστεί.
Στο HTTP, ο browser συνήθως πρέπει να περιμένει να παραδοθεί ένα αρχείο HTML και να αναλυθεί. Μόλις συνειδητοποιήσει ότι χρειάζεται ένα αρχείο CSS, ένα αρχείο JS και μερικές εικόνες, τότε πρέπει να ζητήσει αυτά τα αρχεία από τον web server. Αν κατά την ανάλυση αυτών των αρχείων, συνειδητοποιήσει ότι απαιτούνται και άλλα αρχεία, πρέπει να αποστείλει άλλες αιτήσεις στον web server.
Το HTTP/2 εφαρμόζει ένα μηχανισμό που ονομάζεται Server Push. Ο web server “προβλέπει” ποια αρχεία θα χρειαστούν πριν τα ζητήσει ο browser. Ο web server λοιπόν “ωθεί” τα αρχεία αυτά στον browser, χωρίς να περιμένει να του τα ζητήσει. Αυτό καθιστά τη διαδικασία φόρτωσης του website πολύ πιο γρήγορη.
3) Το HTTP/2 επιτρέπει τη συμπίεση των headers.
Τα headers χρησιμοποιούνται για να ενημερώθει ο web server, σχετικά με το τι πληροφορίες απαιτούνται και σε τι format. Το μέγεθος μια κεφαλίδας είναι συνήθως 500 – 800 bytes, αλλά μπορεί να φτάσει και τα μερικά kilobytes αν για παράδειγμα “μεταφέρει” cookies. Για να μειωθεί το overhead και να αυξηθεί η απόδοση, το HTTP/2 συμπιέζει τα headers, χρησιμοποιώντας τη μορφή συμπίεσης HPACK.
4) Το HTTP/2 λειτουργεί σε δυαδικό σύστημα.
Το HTTP χρησιμοποιεί εντολές κειμένου για την ολοκλήρωση των αιτημάτων, τις οποίες στη συνέχεια μεταφράζει σε δυαδικό σύστημα. Από την άλλη πλευρά, το HTTP/2 λειτουργεί σε δυαδικό σύστημα, τη μητρική δηλαδή γλώσσα του υπολογιστή. Αυτό κάνει την επικοινωνία μεταξύ του browser και του web server πολύ πιο γρήγορη και αποτελεσματική.
Ποιος είναι ο “εφευρέτης” του HTTP/2;
Το 2009, δύο μηχανικοί της Google (Mike Belshe και Roberto Peon) ανέλαβαν την αποστολή να βελτιώσουν την αποδοτικότητα του HTTP, με στόχο να κάνουν το web 2 φορές γρηγορότερο! Το έπραξαν εφαρμόζοντας τις τεχνικές που αναφέρθηκαν παραπάνω, τροποποιώντας ουσιαστικά τον τρόπο με τον οποίο αποστέλλονται τα αιτήματα και οι απαντήσεις τους. Αυτό το πρωτόκολλο έγινε γνωστό ως SPDY (ή Speedy). Ο κώδικας του Speedy υιοθετήθηκε τελικά ως το σημείο εκκίνησης για την ανάπτυξη του HTTP/2!
Πότε θα μπορέσω να εφαρμόσω το HTTP/2 στο website μου;
Το HTTP/2 ορίστηκε και υλοποιήθηκε με τέτοιο τρόπο, ώστε να μπορεί να υποβαθμιστεί σε HTTP αν ο browser του επισκέπτη δεν το υποστηρίζει. Ωστόσο, είναι σχεδόν απίθανο ο browser του επισκέπτη σας να μην υποστηρίζει HTTP/2, μιας και υποστηρίζεται ήδη από Chrome, Firefox, Safari, Opera και Microsoft Edge!
Πως μπορώ να εφαρμόσω το HTTP/2 στο website μου;
Αυτό είναι κάτι που εξαρτάται κυρίως από το λογισμικό που τρέχει ο server που φιλοξενεί το website σας. Το καλύτερο λοιπόν που έχετε να κάνετε, είναι απλά να ρωτήσετε τον υπεύθυνο του server. Υπάρχει όμως και κάτι ακόμα… Το HTTP/2 απαιτεί κρυπτογραφημένη σύνδεση για να λειτουργήσει. Το website σας λοιπόν, θα πρέπει να έχει ενεργοποιημένο κάποιο πιστοποιητικό SSL, έτσι ώστε να δημιουργείται κρυπτογραφημένη σύνδεση μεταξύ του web server σας και του browser του επισκέπτη.
Αν θέλετε να μάθετε περισσότερα για το HTTP/2, για το πως να κάνετε το website σας ταχύτερο και να βελτιώσετε σημαντικά τους χρόνους φόρτωσής του, μη διστάσετε να επικοινωνήσετε μαζί μας!
Στην Hiremycode πιστεύουμε ότι η ταχύτητα φόρτωσης ενός website, είναι ένας από τους σημαντικότερους παράγοντες παροχής θετικής εμπειρίας χρήσης στους επισκέπτες του.
Αφήστε το σχόλιο σας