Το Joomla είναι ένα από τα πιο δημοφιλή CMS στον κόσμο, και ένα από τα πιο αγαπημένα στην Ελλάδα. Στο άρθρο αυτό θα σας παρουσιάσουμε κάποιες ιδέες για να επιταχύνετε το site σας, έτσι ώστε να δείτε αισθητή διαφορά.
Ο λόγος για τον οποίο γράψαμε αυτό το άρθρο είναι επειδή στη GIM, είμαστε με το θέμα της ταχύτητας! Γιατί;
- Καλύτερη ταχύτητα = καλύτερη εμπειρία χρήστη και μεγαλύτερες πιθανότητες να φέρει το site πωλήσεις
- Τα sites που φορτώνουν γρήγορα αυνοούνται στις κατατάξεις του Google (SEO)
- Η ταχύτητα φόρτωσης βελτιώνει το Quality Score στη διαφήμιση Google AdWords
Πειστήκατε, ε;
ΟΚ, προχωράμε!
Καταρχάς η ταχύτητα του site εξαρτάται κυρίως από τους εξής 4 παράγοντες:
- την ταχύτητα με την οποία ο Server παράγει και παραδίδει στον browser τα δεδομένα
- την ταχύτητα του Joomla σας, που έχει να κάνει με τον κώδικα, τον όγκο και τη βάση δεδομένων
- την ταχύτητα με την οποία ο Browser ερμηνεύει τα δεδεομένα (π.χ. ο IE 8 είναι σφώς πιο αργός από το Chrome)
- την ταχύτητα με την οποία άλλοι servers παραδίδουν τα δεδομένα (π.χ. Google servers αν χρημιοποιήτε τα hosted Jquery, Google fonts κ.τ.λ.)
Βέβαια εξαρτάται και από τη ταχύτητα σύνδεσης του υπολογιστή του χρήστη, αλλά δεν μπορούμε να κάνουμε κάτι για τον ΟΤΕ και τους άλλους ISPs…
Ας τα πιάσουμε λοιπόν με τη σειρά:
Ταχύτητα Server
Αν φιλοξενείστε σε αργό server, αλλάξτε φιλοξενία. Μη τσιγκουνεύεστε μερικά ευρώ το μήνα. Αποφύγετε εταιρείες που υπόσχονται ότι έχετε Unlimited χώρο στο δίσκο, traffic, και δε ξέρω και’γω τι άλλο. Δεν υπάρχουν σκληροί δίσκοι με άπειρο χώρο, ούτε CPU με άπειρη επεξεργαστική ισχύ. Όλα αυτά βέβαια κρύβονται στα ψιλά γράμματα στην “πολιτική ορθής χρήσης”.
Η λύση, είναι πιο ακριβή αλλά σαφώς πιο ποιοτική φιλοξενία. Στο παράρτημα της εταιρίας τη FastHosting.gr διαθέτουμε servers τελευταίας γενιάς, και τα Premium πακέτα μας αφορούν φιλοξενία σε servers που διαθέτουν SSD σκληρούς δίσκους για εκπληκτική ταχύτητα. Παρόλα αυτά το άρθρο αυτό δεν είναι για να ευλογήσουμε τα γένια μας, οπότε σας συστήνουμε άλλες ποιοτικές εταιρίες όπως η EuroVPS.
Τι πρέπει να προσέξετε για να έχετε πολύ καλή ταχύτητα (στο 99% των περιπτώσεων):
- Ιδανικά CloudLinux
- 16GB τουλάχιστον μνήμη
- SSD σκληρούς δίσκους
- Apache server με Varnish Cache ή LiteSpeed
- PHP 5.3 τουλάχιστον
- APC cache (ή Memcached για shared cache)
- Optimized MySQL server ή Percona
- Ιδανικά MySQL server σε άλλο ξεχωριστό server
- Κάποιο καλό antivirus
- Κάποιο καλό antispam
- Κάποιο καλό firewall
- Ρυθμίσεις ασφαλείας (hardened linux, suhosin, modsecurity, κτλ)
- BACKUP!
Στα Premium πακέτα φροντίζουμε το Load να μη ξεπερνά το 1 στο server. Εν αντιθέση στα φθηνά πακέτα φιλοξενίας, δεν είναι τυχαίο ο server να έχει load 5+ και κάποιες φορές να είναι υπερφορτωμένος με load 10+
Αν το site σας έχει μεγάλες απαιτήσεις αξίζει να δοκιμάσετε τη λύση dedicated server.
Για Joomla sites η χρήση caching με Varnish+APC και ένα βελτιστοποιημένο MySQL Server μπορεί να κάνει θαύματα! (Αν θέλετε να διαβάσετε tips για βελτιστοποίηση MySQL πατήστε εδώ)
Τι μπορείτε να κάνετε εσείς ως χρήστες μέσα από το διαχειριστικό της φιλοξενίας Cpanel/Plesk
Καταρχάς φροντίστε να κάνε optimize τους πίνακες της βάσης δεδομένων σας, χρησιμοποιώντας το phpmyadmin. Διαβάστε σχετικό άρθρο
Μετά μπείτε στα αρχεία με το File Manager και επεξεργαστείτε το αρχείο .htaccess
Προσθέστε τις παρακάτω γραμμές:
########## Begin - ETag Optimization ## This rule will create an ETag for files based only on the modification ## timestamp and their size. This works wonders if you are using rsync'ed ## servers, where the inode number of identical files differs. ## Note: It may cause problems on your server and you may need to remove it FileETag MTime Size ########## End - ETag Optimization ########## Begin - Automatic compression of resources # Compress text, html, javascript, css, xml, kudos to Komra.de # May kill access to your site for old versions of Internet Explorer # The server needs to be compiled with mod_deflate otherwise it will send HTTP 500 Error. # mod_deflate is not available on Apache 1.x series. Can only be used with Apache 2.x server. # AddOutputFilterByType is now deprecated by Apache. Use mod_filter in the future. AddOutputFilterByType DEFLATE text/plain text/html text/xml text/css application/xml application/xhtml+xml application/rss+xml application/javascript application/x-javascript ########## Begin - Optimal default expiration time ## Note: this might cause problems and you might have to comment it out by ## placing a hash in front of this section's lines # Enable expiration control ExpiresActive On # Default expiration: 1 hour after request ExpiresDefault "now plus 1 hour" # CSS and JS expiration: 1 week after request ExpiresByType text/css "now plus 1 week" ExpiresByType application/javascript "now plus 1 week" ExpiresByType application/x-javascript "now plus 1 week" # Image files expiration: 1 month after request ExpiresByType image/bmp "now plus 1 month" ExpiresByType image/gif "now plus 1 month" ExpiresByType image/jpeg "now plus 1 month" ExpiresByType image/jp2 "now plus 1 month" ExpiresByType image/pipeg "now plus 1 month" ExpiresByType image/png "now plus 1 month" ExpiresByType image/svg+xml "now plus 1 month" ExpiresByType image/tiff "now plus 1 month" ExpiresByType image/vnd.microsoft.icon "now plus 1 month" ExpiresByType image/x-icon "now plus 1 month" ExpiresByType image/ico "now plus 1 month" ExpiresByType image/icon "now plus 1 month" ExpiresByType text/ico "now plus 1 month" ExpiresByType application/ico "now plus 1 month" ExpiresByType image/vnd.wap.wbmp "now plus 1 month" ExpiresByType application/vnd.wap.wbxml "now plus 1 month" ExpiresByType application/smil "now plus 1 month" # Audio files expiration: 1 month after request ExpiresByType audio/basic "now plus 1 month" ExpiresByType audio/mid "now plus 1 month" ExpiresByType audio/midi "now plus 1 month" ExpiresByType audio/mpeg "now plus 1 month" ExpiresByType audio/x-aiff "now plus 1 month" ExpiresByType audio/x-mpegurl "now plus 1 month" ExpiresByType audio/x-pn-realaudio "now plus 1 month" ExpiresByType audio/x-wav "now plus 1 month" # Movie files expiration: 1 month after request ExpiresByType application/x-shockwave-flash "now plus 1 month" ExpiresByType x-world/x-vrml "now plus 1 month" ExpiresByType video/x-msvideo "now plus 1 month" ExpiresByType video/mpeg "now plus 1 month" ExpiresByType video/mp4 "now plus 1 month" ExpiresByType video/quicktime "now plus 1 month" ExpiresByType video/x-la-asf "now plus 1 month" ExpiresByType video/x-ms-asf "now plus 1 month" ########## End - Optimal expiration time
Δεν είναι απόλυτο ότι θα χρησιμοποιήσετε αυτές τις ρυθμίσεις, πάντως είναι μια καλή αρχή. Χάρη στο Deflate συμπιέζονται και αποσυμπιέζονται on the fly τα δεδομένα καθώς στέλνονται προς το browser. Χάρη στο Expires ο Browser δεν θα ξανακατεβάσει κάποια αρχεία αν τα έχει ήδη στη μνήμη του, οπότε η σελίδα θα φορτώσει πολύ πιο γρήγορα. Περισσότερα στοιχεία θα βρείτε εδώ: https://magazine.joomla.org/all-issues/issue-june-2012/htaccess-file-that-freakin-works
Βελτιώση Κώδικα – Παραμετροποίηση Joomla
Κατάρχάς σκεφτείτε τι είναι περιττό στο site σας. Έχετε modules, plugins που δεν χρησιμοποιείτε; Βγάλτε τα! https://docs.joomla.org/Uninstalling_an_extension
Έπειτα πηγαίνεται στο Global Configuration του site σας και ενεργοποιήστε τη Cache. Συνήθως χρησιμοποιούμε τη Conservative ρύθμιση και βάζουμε το χρόνο στα 30′. Οπότε στα 30′ θα χρειαστεί ο server να ξαναερμηνεύσει τον κώδικα php, και μέχρι τότε θα σερβίρει τα ίδια δεδομένα.
Στον τύπο Cache βάλτε APC αν είστε τυχεροί, αλλιώς στην χειρότερη περίπτωση βάλτε File. Και πάλι θα δείτε διαφορά ακόμα και με το File. Περισσότερε πληροφορίες εδώ
Αφού ολοκληρώσετε και αυτό το βήμα προτείνω να δοκιμάσετε κάποιο addon για Συμπίεση, και ένωση πολλαπλών αρχείων για να μη ζορίζεται ο σκληρός δίσκος και ο Browser. Στη GIM έχουμε πάντα καλά αποτελέσματα χρησιμοποιώντας το JCHOptimize.
Αν ψάξετε είναι σίγουρο πως θα βρείτε και άλλα καλά extensions για ταχύτητα στο Joomla.
Αν θέλετε ακόμα πεγαλύτερα ταχύτητα δοκιμάστε ένα CDN όπως το MaxCDN, το Cloudflare ή το Akamai CDN (δείτε εδώ τι είναι το CDN)
Για τους πολύ προχωρημένους, αν γνωρίζετε καλά MySQL είμαι σίγουρος ότι μπορείτε να άνετε ακόμα πιο optimized τη βάση δεδομένων του Joomla με indexes κ.τ.λ. και optimization κάποιων queries.
Βελτιώση Ερμηνείας Κώδικα από Browser
Η αλήθεια είναι πως δε μπορείτε να κάνετε και πολλά πράγματα αν οι περισσότεροι χρήστες χρησιμοποιούν παλιότερες εκδόσεις Firefox ή IE. Μπορείτε να δείτε τι browsers χρησιμοποιούν οι περισσότεροι επισκέπτες του site σας μέσα από το Google Analytics.
Για να πάρετε πολλές συμβουλές στο τι να κάνετε για τη βελτίωση του κώδικα χρησμιοποιήστε 2 καταπληκτικά εργαλεία:
https://developers.google.com/speed/pagespeed/insights/
(ένα άλλο καλό εργαλείο είναι το Yslow)
Βάλτε το site σας, πατήστε το test, και προσπαθήστε να ακολουθήσετε τις συμβουλές που σας λένε τα εργαλεία.
Σημείωση: Το JCH Optimize, και οι αλλαγές στο .htaccess θα σας έχουν ήδη ανεβάσει το score
Αν το template που χρησιμοποείτε δεν είναι βελτιστοποιημένο για ταχύτητα σκεφτείτε σοβαρά την αντικατάσταση του.
Όσον αφορά τα πιο πρακτικά πράγματα, ελέγξτε κατά πόσο οι εικόνες στο site σας είναι Web friendly (μικρές σε μέγεθος KB) και αν έχετε πάρα πολλές δοκιμάστε ένα ωραίο Plugin το Lazy Load.
Επίσης αποφύγετε κάποια βαριά widgets όπως το Facebook fan box…
Ταχύτητα Άλλων Servers
Υπάρχει περίπτωση το site σας να φορτώνει 3rd party κώδικα και resources. Συνήθη παραδείγματα είναι τα εξής:
- Google fonts
- Jquery, και άλλα js libriaries
- Social media wisgets, buttons…
Ενδέχεται κάποια από αυτά να μην τα χρειάζεστε στο site σας (ή να τα χρειάζεστε μονο σε 1-2 σελίδες). Οπότε δείτε μηπως μπορείτε να τα απενεργοποίησετε. Αν ο server σας έχει πολύ καλή ταχύτητα υπό περιπτώσεις συμφέρει να κάνετε εσείς host ένα αρχείο αντί να στηρίζεστε σε άλλο server.
Εξαίρεση 3rd party servers είναι το CDN το οποίο συνήθως επιταχύνει την ταχύτητα φόρτωσης (εκτός αν είναι κακής ποιότητας)
Έξτρα TIP
Υπάρχει ένα “κρυμμένο” system plugin για page cache, το οποίο δημιουργεί στατική έκδοση κάθε σελίδας. Η χρήση του έχει θετικά και αρνητικά. Αν δεν αναεώνεται συχνά το περιεχόμενο του site σας, και έχετε μεγάλη επισκεψιμότητα δοκιμάστε να το ενεργοποιήσετε.
Δικά σας Σχόλια & Συμβουλές
Το άρθρο αυτό δεν θα είναι πλήρες χωρίς τα δικά σας σχόλια και τις δικές σας συμβουλές. Γράψτε από κάτω το σχόλιο σας, για το πως έχετε βελτιώνετε εσείς την ταχύτητα του site σας. Κάθε τόσο θα εμπλουτίζουμε αυτό το άρθρο με τα δικά σας σχόλια.