Το Brotli είναι ένας νέος αλγόριθμος συμπίεσης που αναπτύχθηκε από την Google. Το μικρότερο μέγεθος απόκρισης συμπίεσης επιτρέπει καλύτερη χρήση του χώρου και ταχύτερη φόρτωση της σελίδας. Σε πολλές περιπτώσεις, το Brotli ξεπερνά το gzip. Πλεονεκτήματα: Για τυπικά στοιχεία ιστού όπως css, html, js, το Brotli ξεπερνά το gzip κατά 17-25%. Πυκνότητα Brotli -11 σε σύγκριση με το gzip-9: html (πολύγλωσσο σώμα): εξοικονομήστε 25% του js (το υψηλότερο 10k της Alexa): εξοικονομήστε το 17% του συρρικνούμενου js (το κορυφαίο 10k της Alexa): εξοικονομήστε το 17% του css (το κορυφαίο 10k της Alexa): 20% εξοικονόμηση.
Εισαγωγή στον αλγόριθμο Brotli
Το Brotli κυκλοφόρησε αρχικά το 2015 για συμπίεση γραμματοσειρών ιστού εκτός σύνδεσης. Οι μηχανικοί λογισμικού της Google κυκλοφόρησαν μια βελτιωμένη έκδοση του Brotli τον Σεπτέμβριο του 2015 με ιδιαίτερη έμφαση στη συμπίεση HTTP. Ο κωδικοποιητής έχει ξαναγραφτεί εν μέρει για να βελτιωθεί η αναλογία συμπίεσης, τόσο ο κωδικοποιητής όσο και ο αποκωδικοποιητής έχουν αυξηθεί για ταχύτητα και το API ροής έχει βελτιωθεί για να προσθέσει περισσότερα επίπεδα ποιότητας συμπίεσης. Η νέα έκδοση δείχνει επίσης βελτιώσεις απόδοσης σε όλες τις πλατφόρμες και μειωμένη μνήμη που απαιτείται για την αποκωδικοποίηση.
Σε αντίθεση με τους κοινούς αλγόριθμους συμπίεσης γενικής χρήσης, ο Brotli χρησιμοποιεί ένα προκαθορισμένο λεξικό 120 kilobyte. Το λεξικό περιέχει πάνω από 13.000 λέξεις, φράσεις και άλλες υποσυμβολοσειρές που χρησιμοποιούνται συνήθως από ένα μεγάλο σώμα κειμένων και εγγράφων HTML. Οι προκαθορισμένοι αλγόριθμοι μπορούν να αυξήσουν την πυκνότητα συμπίεσης μικρότερων αρχείων.
Η χρήση Brotli αντί για ξεφούσκωμα για τη συμπίεση αρχείων κειμένου μπορεί συνήθως να αυξήσει την πυκνότητα συμπίεσης κατά 20%, ενώ η ταχύτητα συμπίεσης και αποσυμπίεσης είναι περίπου η ίδια. Ο τύπος κωδικοποίησης περιεχομένου για συμπίεση ροής χρησιμοποιώντας το Brotli έχει προταθεί να χρησιμοποιεί το "br".
Μπρότλι εναντίον Γκζιπ
Κατά την αξιολόγηση των αλγορίθμων συμπίεσης, εστιάζουμε σε δύο δείκτες: τον ρυθμό συμπίεσης και την ταχύτητα συμπίεσης. Όπως μπορείτε να δείτε στο παραπάνω σχήμα, ανεξάρτητα από το ποιο από τα 9 επίπεδα συμπίεσης του gzip χρησιμοποιείται, ο λόγος συμπίεσής του είναι χαμηλότερος από αυτόν του brotli (σε σύγκριση με το gzip, μπορεί επίσης να ρυθμιστεί στο 10) και η ταχύτητα συμπίεσης είναι επίσης πιο αργή.
Πλεονέκτημα Brotli: Το Brotli ξεπερνά το gzip κατά 17-25% για τυπικά στοιχεία ιστού όπως css, html, js. Πυκνότητα Brotli -11 σε σύγκριση με το gzip-9: html (πολύγλωσσο σώμα): εξοικονομήστε 25% των js (τα υψηλότερα 10k της Alexa): εξοικονομήστε 17% των συρρικνούμενων js (τα κορυφαία 10k της Alexa): εξοικονομήστε 17% των css (τα κορυφαία 10k της Alexa): 20% εξοικονόμηση
asp.net πυρήνας επιτρέπει στο Brotli
Τιμή κεφαλίδας Αποδοχή-Κωδικοποίηση
Διαμόρφωση κώδικα
Ο παρακάτω κώδικας δείχνει πώς μπορείτε να ενεργοποιήσετε το ενδιάμεσο λογισμικό συμπίεσης απόκρισης για τον προεπιλεγμένο τύπο MIME και τις υπηρεσίες παροχής συμπίεσης (Brotli και Gzip):
Σημείωση:
- εφαρμογή. Το UseResponseCompression πρέπει να περιλαμβάνεται στην εφαρμογή. Χρησιμοποιήστε το Mvc πριν καλέσετε.
- Χρησιμοποιήστε εργαλεία όπως το Fiddler, το Firebug ή το Postman για να ρυθμίσετε την κεφαλίδα αιτήματος αποδοχής-κωδικοποίησης και να μελετήσετε την κεφαλίδα, το μέγεθος και το σώμα της απάντησης.
Από προεπιλογή, η υπηρεσία παροχής συμπίεσης Brotli προστίθεται στον πίνακα της υπηρεσίας παροχής συμπίεσης μαζί με την υπηρεσία παροχής συμπίεσης Gzip. Όταν ο πελάτης υποστηρίζει τη μορφή συμπιεσμένων δεδομένων Brotli, η συμπίεση είναι προεπιλεγμένη σε συμπίεση Brotli. Εάν ο πελάτης δεν υποστηρίζει Brotli, η συμπίεση είναι προεπιλεγμένη σε Gzip όταν ο πελάτης υποστηρίζει συμπίεση Gzip.
Δοκιμή συμπίεσης BR
Ανοίξτε το εργαλείο λήψης πακέτων βιολιού και χρησιμοποιήστε ένα πρόγραμμα περιήγησης για να αποκτήσετε πρόσβαση στη διεύθυνση του ιστότοπού μας, μπορείτε να δείτε τα εξής:
Κεφαλίδα αιτήματος: Αποδοχή-Κωδικοποίηση: gzip, deflate, br
Κεφαλίδα απάντησης: Κωδικοποίηση περιεχομένου: br
Όταν εκτελείται συμπίεση, η κεφαλίδα Content-Length καταργείται επειδή το περιεχόμενο του σώματος αλλάζει όταν συμπιέζεται η απόκριση.
Όταν εκτελείται συμπίεση, η κεφαλίδα Content-MD5 καταργείται, επειδή το περιεχόμενο του σώματος έχει αλλάξει και ο κατακερματισμός δεν είναι πλέον έγκυρος.
Όταν asp.net πυρήνας ενεργοποιεί τη λειτουργία https, το Brotli δεν θα επηρεάσει τη συμπίεση html και json, αλλά μπορεί να συμπιέσει js και css. (Είναι πιθανό το μήκος των χαρακτήρων να είναι πολύ μικρό για να συμπιεστεί και θα πρέπει να οριστεί)
(Τέλος)
|