Τι είναι το gzip και πώς χρησιμοποιείται αυτό το εργαλείο;
Το λογισμικό συμπίεσης δεδομένων gzip είναι συμβατό με όλες τις πλατφόρμες και χρησιμοποιείται ευρέως στην ανάπτυξη ιστοσελίδων και σε διαδικτυακά έργα ως η βασική λύση συμπίεσης. Μπορεί να ενεργοποιηθεί και να χρησιμοποιηθεί εύκολα μέσω της γραμμής εντολών, βοηθώντας σας να εξοικονομήσετε χώρο αποθήκευσης και να βελτιώσετε την απόδοση του συστήματος.
Πώς λειτουργεί το gzip;
Το gzip — συντομογραφία του «GNU zip» — βασίζεται στον ελεύθερα διαθέσιμο αλγόριθμο Deflate, ο οποίος συνδυάζει τη μέθοδο συμπίεσης LZ77 (Lempel-Ziv 77) με την κωδικοποίηση Huffman. Χρησιμοποιώντας αυτές τις τεχνικές, τα αρχεία gzip αναζητούν επαναλαμβανόμενες σειρές δεδομένων. Εάν το πρόγραμμα εντοπίσει αυτές τις επαναλαμβανόμενες ακολουθίες, τις αντικαθιστά με έναν σύνδεσμο προς τη σειρά που εμφανίζεται για πρώτη φορά. Το μήκος αυτών των ακολουθιών περιορίζεται συνήθως στα 32.000 byte. Εάν μια ακολουθία χαρακτήρων δεν εμφανίζεται στα προηγούμενα 32.000 byte, αποθηκεύεται (χωρίς να συμπιέζεται) στο αρχείο gzip που λαμβάνει την κατάληξη .gz.
Η διαδικασία περιορίζεται σε μεμονωμένα αρχεία, γι’ αυτό και απαιτείται το πρόγραμμα συμπίεσης tar για τη δημιουργία των λεγόμενων αρχείων tarball με τις καταλήξεις: .tar.gz ή .tgz. Από προεπιλογή, το αρχικό αρχείο διαγράφεται μετά gzip συμπίεση (όταν η διαδικασία εφαρμόζεται απευθείας σε ένα αρχείο). Ωστόσο, μπορείτε να απενεργοποιήσετε αυτή την αυτόματη συμπεριφορά χρησιμοποιώντας την προαιρετική παράμετρο -k. Για να αποσυμπιέσετε συμπιεσμένα αρχεία, μπορείτε είτε να χρησιμοποιήσετε το βοηθητικό πρόγραμμα gunzip είτε την κατάλληλη εντολή gzip.
Επισκόπηση της σύνταξης και των εντολών του gzip
Παρόλο που υπάρχουν γραφικά περιβάλλοντα χρήστη για διάφορες πλατφόρμες, η χρήση gzip μέσω εντολών στο τερματικό ή στη γραμμή εντολών είναι, φυσικά, απολύτως εφικτή. Ακόμη και οι αρχάριοι θα το βρουν εύκολο στη χρήση, καθώς gzip είναι ένα κλασικό εργαλείο γραμμής εντολών που έχει βελτιστοποιηθεί για αυτόν τον τύπο χρήσης. Η γενική σύνταξη έχει την εξής μορφή:
gzip option file(s)bashΔεν απαιτείται ο καθορισμός επιλογών. Εάν το πεδίο παραμείνει κενό, gzip χρησιμοποιεί απλώς τις προεπιλεγμένες ρυθμίσεις του. Για παράδειγμα, η ακόλουθη απλή εντολή αρκεί για να δημιουργηθεί μια συμπιεσμένη έκδοση του αρχείου κειμένου example.txt:
gzip example.txtbashΓια να αποσυμπιέσετε αρχεία αργότερα ή για να καθορίσετε παραμέτρους σχετικά με το επίπεδο συμπίεσης, τη θέση αποθήκευσης ή τον τρόπο χειρισμού του αρχικού αρχείου, οι εντολές θα απαιτήσουν τις κατάλληλες παραμέτρους. Ο παρακάτω πίνακας παρέχει μια επισκόπηση των gzip πιο σημαντικών εντολών:
| Επιλογή | Περιγραφή |
|---|---|
-1 … -9
|
Ορίζει το επίπεδο συμπίεσης (1–9), όπου 1 παρέχει το ταχύτερο και λιγότερο συμπιεσμένο αποτέλεσμα, και 9 προσφέρει την καλύτερη αλλά πιο αργή συμπίεση· το προεπιλεγμένο επίπεδο είναι 5
|
-r
|
Σαρώνει αναδρομικά τον κατάλογο (συμπεριλαμβανομένων όλων των υποκαταλόγων) και συμπιέζει ή αποσυμπιέζει όλα τα αρχεία που περιέχει |
-f
|
Επιβάλλει συμπίεση gzip και αντικαθιστά τα υπάρχοντα αρχεία με το ίδιο όνομα, αν χρειαστεί |
-d
|
Αποσυμπιέζει το επιλεγμένο αρχείο στον τρέχοντα κατάλογο |
-k
|
Αποτρέπει τη διαγραφή του αρχικού αρχείου |
-l
|
Εμφανίζει πληροφορίες όπως ο λόγος συμπίεσης ενός συμπιεσμένου αρχείου |
-c
|
Εξάγει το συμπιεσμένο αρχείο στην τυπική έξοδο (συνήθως την οθόνη που είναι συνδεδεμένη με τη γραμμή εντολών) |
-q
|
Καταστέλλει όλα τα μηνύματα gzip |
-t
|
Ελέγχει την ακεραιότητα του συμπιεσμένου αρχείου |
-h
|
Παραθέτει όλες τις διαθέσιμες επιλογές |
Περιπτώσεις χρήσης της συμπίεσης gzip
Σήμερα, gzip είναι σχεδόν ανεξάρτητο από πλατφόρμα και μπορεί να επεκταθεί ανάλογα με τις ανάγκες, αρκεί το επιλεγμένο έργο να συμμορφώνεται με την άδεια GPL. Στα συστήματα Linux, το εργαλείο συμπίεσης είναι συνήθως προεγκατεστημένο ή εύκολα διαθέσιμο μέσω του διαχειριστή πακέτων. Ο επίσημος ιστότοπος του gzip προσφέρει επίσης εκδόσεις για macOS και Windows. Μπορείτε να χρησιμοποιήσετε το λογισμικό σε αυτά τα συστήματα ανά πάσα στιγμή για να εξοικονομήσετε χώρο αποθήκευσης.
Ένας άλλος βασικός τομέας εφαρμογής είναι ο ιστός. Οι διακομιστές ιστού όπως ο Apache υποστηρίζουν τη συμπίεση gzip εδώ και χρόνια, ενώ τα σύγχρονα προγράμματα περιήγησης είναι σε θέση να αναγνωρίζουν τα συμπιεσμένα αρχεία και να τα αποσυμπιέζουν κατά την απόδοση της ιστοσελίδας. Εδώ είναι που gzip μπορεί να αναδείξει πλήρως τις δυνατότητές του, καθώς, όταν είναι ενεργοποιημένο, ο διακομιστής ιστού συμπιέζει αυτόματα τόσο το περιεχόμενο που έχει μεταφορτωθεί όσο και τα στοιχεία της ιστοσελίδας που δημιουργούνται δυναμικά στον διακομιστή. Αυτό μπορεί να μειώσει σημαντικά τους χρόνους φόρτωσης της ιστοσελίδας, στο πλαίσιο της βασικής βελτιστοποίησής της. Εν τω μεταξύ, το πρόγραμμα περιήγησης χειρίζεται την αποσυμπίεση στο παρασκήνιο χωρίς να καταναλώνει επιπλέον εύρος ζώνης. Αυτή η βελτίωση της απόδοσης ωφελεί ιδιαίτερα τους χρήστες κινητών συσκευών και μπορεί να βελτιώσει έμμεσα την κατάταξη της ιστοσελίδας σας στις μηχανές αναζήτησης.
Πώς να χρησιμοποιήσετε τη συμπίεση gzip στο διαδικτυακό σας έργο Apache
Οι διακομιστές ιστού συνήθως προσφέρουν τη συμπίεση gzip ως λειτουργικό στοιχείο που απλώς πρέπει να ενεργοποιηθεί. Σήμερα, πολλοί πάροχοι φιλοξενίας ιστού ενεργοποιούν αυτή τη λειτουργία από προεπιλογή, ενώ στο παρελθόν αυτό δεν ίσχυε πάντα. Αν δεν είστε σίγουροι αν ο πάροχος φιλοξενίας σας υποστηρίζει τη συμπίεση gzip, μπορείτε είτε να επικοινωνήσετε απευθείας μαζί του είτε να κάνετε εσείς οι ίδιοι έναν χειροκίνητο έλεγχο.
Σε έναν διακομιστή ιστού Apache, μπορείτε να ελέγξετε τις ρυθμίσεις του module χρησιμοποιώντας μια απλή έξοδο phpinfo(). Η καταχώριση HTTP_ACCEPT_ENCODING θα σας δείξει ποια μέθοδος συμπίεσης έχει επιλεγεί — ή αν έχει ενεργοποιηθεί καθόλου συμπίεση. Εάν gzip είναι διαθέσιμο, έχετε τρεις διαφορετικές επιλογές για να χρησιμοποιήσετε αυτό το εργαλείο συμπίεσης ανάλογα με τις ανάγκες σας.
Επιλογή 1: Ενεργοποίηση της συμπίεσης gzip στο αρχείο .htaccess
Χρησιμοποιώντας το αρχείο .htaccess, μπορείτε να ορίσετε ρυθμίσεις για συγκεκριμένους καταλόγους και να διαμορφώσετε τον διακομιστή ιστού σας σε πραγματικό χρόνο. Αυτό λειτουργεί επειδή το αρχείο διαμόρφωσης —το οποίο συνήθως βρίσκεται στον **ριζικό κατάλογο—**διαβάζεται αυτόματα με κάθε αίτημα που φτάνει στον διακομιστή. Ωστόσο, σε ορισμένους παρόχους φιλοξενίας ιστού, το αρχείο .htaccess μπορεί να βρίσκεται σε διαφορετικό φάκελο, να είναι κρυφό ή ακόμη και να έχει περιορισμένη πρόσβαση. Σε αυτή την περίπτωση, η μόνη επιλογή που έχετε είναι να επικοινωνήσετε με τον πάροχο φιλοξενίας σας και να ζητήσετε πρόσβαση. Εάν μπορείτε να κάνετε αλλαγές, μπορείτε να ενεργοποιήσετε τη συμπίεση gzip χρησιμοποιώντας το module για τον αλγόριθμο Deflate (mod_deflate) προσθέτοντας τον ακόλουθο κώδικα στο αρχείο .htaccess:
<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/xml
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE application/rss+xml
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE application/x-javascript
</IfModule>txtΘα χρειαστείτε επίσης την άδεια του παρόχου φιλοξενίας σας για να χρησιμοποιήσετε τα modules mod_gzip και mod_deflate.
Επιλογή 2: Ενεργοποίηση συμπίεσης gzip μέσω PHP
Είναι δυνατό να ενεργοποιήσετε τη συμπίεση gzip χρησιμοποιώντας μια απλή εντολή PHP. Το μειονέκτημα είναι ότι ο κώδικας πρέπει να προστεθεί ξεχωριστά σε κάθε αρχείο PHP. Επομένως, θα πρέπει να χρησιμοποιήσετε αυτήν την επιλογή μόνο αν δεν διαθέτετε τα απαραίτητα δικαιώματα για να επεξεργαστείτε το αρχείο .htaccess. Η γραμμή κώδικα που πρέπει να τοποθετήσετε στην αρχή κάθε αρχείου έχει ως εξής:
<?php
ob_start("ob_gzhandler");
?>phpΕπιλογή 3: Εφαρμογή του gzip μέσω προσθέτου
Εκτός από αυτές τις δύο χειροκίνητες λύσεις, υπάρχει και μια εναλλακτική επιλογή που απαιτεί ελάχιστη προσπάθεια για την εγκατάσταση: η ενεργοποίηση της συμπίεσης gzip μέσω ενός πρόσθετου για το σύστημα διαχείρισης περιεχομένου που χρησιμοποιείτε. Τέτοιες χρήσιμες επεκτάσεις, τις οποίες μπορείτε να εγκαταστήσετε μέσα σε λίγα λεπτά και να προσαρμόσετε στις ανάγκες σας, προορίζονται κυρίως για CMS όπως το WordPress, τα οποία βασίζονται σε PHP. Η παρακάτω λίστα περιλαμβάνει τρία από τα πιο δημοφιλή πρόσθετα για το λογισμικό ιστολογίου:
- W3 Total Cache: Το πρόσθετο W3 Total Cache για WordPress υπόσχεται αισθητή βελτίωση στην απόδοση του ιστότοπου. Εκτός από διάφορους μηχανισμούς προσωρινής αποθήκευσης και ειδική υποστήριξη για κινητά, αυτή η σουίτα εργαλείων SEO και χρηστικότητας περιλαμβάνει επίσης επιλογές για την ενεργοποίηση της συμπίεσης gzip.
- WP Rocket: Το WP Rocket είναι ένα άλλο κλασικό plugin προσωρινής αποθήκευσης για το WordPress. Είναι εύκολο στη χρήση και ενεργοποιεί όλες τις βασικές λειτουργίες βελτιστοποίησης της απόδοσης —συμπεριλαμβανομένης της συμπίεσης gzip—από την πρώτη στιγμή.
- WP Performance Score Booster: Το plugin WP Performance Score Booster έχει ήδη ξεπεράσει τις 10.000 ενεργές εγκαταστάσεις. Με αυτό το plugin, μπορείτε εύκολα να ενεργοποιήσετε το gzip και να συμπιέσετε αποτελεσματικά το περιεχόμενο του διαδικτυακού σας έργου, συμπεριλαμβανομένων κειμένου, HTML, JavaScript, CSS, XML και άλλων.
Πώς να ρυθμίσετε το gzip σε έναν διακομιστή ιστού NGINX βήμα προς βήμα
Εάν παρέχετε το περιεχόμενο του ιστότοπού σας μέσω ενός διακομιστή ιστού NGINX, μπορείτε επίσης να αξιοποιήσετε τη συμπίεση gzip για να βελτιώσετε τον χρόνο φόρτωσης του έργου σας. Για να το κάνετε αυτό, αρκεί να ρυθμίσετε την οδηγία ngx_http_gzip_module. Από προεπιλογή, η οδηγία gzip —η οποία ενεργοποιεί ή απενεργοποιεί τη λειτουργία συμπίεσης— είναι απενεργοποιημένη.
Για να αλλάξετε αυτή τη ρύθμιση, ανοίξτε το κύριο αρχείο διαμόρφωσης nginx.conf και εντοπίστε την οδηγία gzip. Αντικαταστήστε gzip off με gzip on. Ο παρακάτω πίνακας εξηγεί τον σκοπό και τις επιλογές ορισμένων πρόσθετων οδηγιών που χρησιμοποιούνται για τη διαμόρφωση της συμπίεσης gzip στο NGINX:
| Οδηγία | Σύνταξη | Προεπιλεγμένη ρύθμιση | Περιγραφή | |
|---|---|---|---|---|
gzip_buffers
|
gzip_buffers number size;
|
gzip_buffers 32 4k \
|
16 8k;
|
Καθορίζει τον αριθμό και το μέγεθος των buffer που χρησιμοποιούνται κατά τη διαδικασία συμπίεσης |
gzip_comp_level
|
gzip_comp_level level;
|
gzip_comp_level 1;
|
Ορίζει το επίπεδο συμπίεσης. Έγκυρες τιμές: 1–9 | |
gzip_min_length
|
gzip_min_length length;
|
gzip_min_length 20;
|
Καθορίζει το ελάχιστο μήκος (σε byte) για ένα αρχείο που θα συμπιεστεί | |
gzip_http_version
|
gzip_http_version version;
|
gzip_http_version 1.1;
|
Καθορίζει την ελάχιστη απαιτούμενη έκδοση HTTP για συμπιεσμένες απαντήσεις | |
gzip_types
|
gzip_types content-type;
|
gzip_types text/html;
|
Καθορίζει ποιοι τύποι περιεχομένου πρέπει να συμπιέζονται (π.χ. CSS, JSON, XML) |
Πώς να ελέγξετε τη συμπίεση gzip
Αφού ρυθμίσετε τη συμπίεση gzip για τον ιστότοπό σας, μπορείτε να χρησιμοποιήσετε διάφορα εργαλεία για να βεβαιωθείτε ότι λειτουργεί σωστά και ότι ο διακομιστής σας παρέχει συμπιεσμένο περιεχόμενο σε απόκριση στα αιτήματα των πελατών. Ένα από τα πιο συνιστώμενα εργαλεία για αυτό το σκοπό είναι το Google PageSpeed Insights. Απλά εισάγετε οποιαδήποτε σελίδα από τον ιστότοπό σας και το εργαλείο θα αναλύσει αυτόματα το περιεχόμενό της και θα παρέχει μια αναφορά σχετικά με τα πλεονεκτήματα και τα μειονεκτήματα της απόδοσης της σελίδας. Μεταξύ των αποτελεσμάτων, θα βρείτε πληροφορίες σχετικά με το αν η συμπίεση gzip είναι ενεργοποιημένη.
Εναλλακτικά, μπορείτε να κάνετε μια γρήγορη δοκιμή gzip χρησιμοποιώντας το εργαλείο «HTTP Compression Test» στο WhatsMyIP.org.