Σύγκριση των δημοφιλέστερων CMS από Ευθύμιος Θεοτοκάτος


Ανάρτηση Κυριακή 17 Μαΐου 2015


Σε αυτό το άρθρο θέλω να διατυπώσω τις σκέψεις μου καθώς και κάποιες μετρήσεις που πραγματοποίησα μεταξύ των δημοφιλέστερων cms που κυκλοφορούν (Joomla,wordpress,drupal). Η Σύγκριση έγινε στην βασική τους εγκατάσταση ώστε ο έλεγχος να γίνει στο «κουτί τους» χωρίς την προσθήκη κάποιον εξωτερικών επεκτάσεων.

Πόσο βαρύ είναι για τον server
Οι μετρήσεις γίνανε ώστε να διαπιστωθούν οι ταχύτητες φόρτωσης, ο χώρος που καταλαμβάνουν στον δίσκο καθώς και πόση μνήμη χρησιμοποιούν από τον Server. Είναι αρκετά δύσκολο να βρούμε την συνολική μνήμη RAM που χρησιμοποιούν σε κάθε γραμμή κώδικα, για αυτό τον λόγο η μέτρηση έγινε πριν και μετά την εκτέλεση του script ώστε να διαπιστωθεί πόση μνήμη έχει κρατήσει ο server για λογαριασμό του συγκεκριμένου cms.

Για τα τεστ χρησιμοποιήθηκαν τα εργαλεία xdebug και WinCachegrind  ενώ τοποθετήθηκε στην αρχική τους σελίδα ένα μικρό κομμάτι κώδικα php για να μετρηθεί η συνολική μνήμη που χρησιμοποιούν πριν και μετά το κάθε αίτημα προς τον χρήστη.

Πάμε λοιπόν να δούμε τις μετρήσεις από το xdebug και WinCachegrind

Το Joomla Χρειάστηκε περίπου 920 ms (milisecond) , σχεδόν ένα δευτερόλεπτο για να φορτώσει την αρχική σελίδα Home. Το συνολικό μέγεθος όλων των αρχείων του πλην της βάσης δεδομένων, καταλαμβάνει το 35,6 MB από τον δίσκο του server μας. Η Συνολική μνήμη RAM που αφήνει σε χρήση στον server μετά την αποστολή της σελίδας στον χρήστη είναι 6.5 ΜΒ (Mega Byte). Το συνολικό μέγεθος της Βάσης δεδομένων είναι 3,69 MB.

Το Wordpress  έτρεξε 2 request παρόλο που ζητήθηκε μόνο η πρώτη σελίδα. Φορτώθηκε η βασική index.php και ένα wp-cron.php το οποίο τρέχει κάθε φορά που ζητήθηκε μια σελίδα. Για το wp-cron.php χρειάστηκαν 671 ms ενώ για την index.php 1.997ms.
Συνολικά πήρε 671+1.997 = 2.668 ms. Δηλαδή μόλις δυο δευτερόλεπτα.
Το συνολικό μέγεθος όλων των αρχείων του πλην της βάσης του καταλαμβάνει το 22,3 MB από τον δίσκο του server μας.
Η Συνολική μνήμη RAM που αφήνει σε χρήση στον server μετά την αποστολή της σελίδας στον χρήστη είναι 12.5 ΜΒ (Mega Byte).
Το συνολικό μέγεθος της Βάσης δεδομένων είναι 1 MB

Το Drupal χρειάστηκε μόλις 577 ms για να φορτώσει την πρώτη του σελίδα, δηλαδή το μισό του δευτερολέπτου. Το συνολικό μέγεθος όλων των αρχείων του πλην της βάσης του καταλαμβάνουν το 14,6 MB από τον δίσκο του server μας. Η Συνολική μνήμη RAM που αφήνει σε χρήση στον server μετά την αποστολή της σελίδας στον χρήστη είναι 9.75 ΜΒ (Mega Byte). Το συνολικό μέγεθος της Βάσης δεδομένων είναι 4.7 MB

Ας τα δούμε σε ένα πίνακα όλα μαζί
             

  Ταχύτητα φόρτωσης πρώτης σελίδας σε ms (milisecond)  Χώρος στον δίσκο
Για τα αρχεία php,html,js,css κλπ
Χώρος στον δίσκο για την βάση δεδομένων Χρήση Ram πριν το αίτημα  Χρήση Ram Μετά
Το αίτημα
Drupal 577 ms 14,6 MB 4.7 MB 256 kB 9.75 ΜΒ
Word Press 2.668 ms 22,3 MB 1 MB 256 kB 12.5 ΜΒ
Joomla     920 ms 35,6 MB 3,69 MB 256 kB 6.5 ΜΒ

Το Drupal δείχνει να είναι νικητής στην ταχύτητα φόρτωσης και στο μέγεθος των αρχείων που καταλαμβάνει στον δίσκο. Χρησιμοποιεί περισσότερο χώρο για την βάση από τα άλλα δυο παρόλα αυτά είναι αρκετά ικανοποιητικό στην χρήση της RAM.

Το Wordpress φαίνεται νικητής στο πόση βάση δεδομένων χρησιμοποιεί ενώ το Joomla νικάει στο ότι χρησιμοποιεί λιγότερη βάση και χρησιμοποιεί λιγότερη μνήμη RAM στο server.

Η μέτρηση έγινε στην αρχική τους έκδοση – εγκατάσταση, πράγμα που σημαίνει πως αν εγκαταστήσουμε περισσότερο κώδικα η διαμορφώσουμε την σελίδα μας ανάλογα, μπορούμε να πετύχουμε καλύτερα αποτελέσματα.

Τα νούμερα αυτά είναι σχεδόν αμελητέα για έναν Server και δεν πρέπει να μας ανησυχεί ιδιαίτερα σε ποια λύση θα πάμε.
Όμως το πόσο κουράζει τον server είναι η μια μεριά των πραγμάτων. Η άλλη είναι το πόσο κουράζετε ο υπολογιστής του client (του επισκέπτης μας). Για να το βρούμε αυτό θα πρέπει να καταλάβουμε ότι όταν μια σελίδα φτάνει στον υπολογιστή μας από τον web server, έρχεται ως html έγγραφο. Ο browser τότε αρχίζει να την διαβάζει και να την επεξεργάζεται χρησιμοποιώντας την CPU και την RAM του client.

Τα αρχεία που κατεβαίνουν είναι τα html, javascript, style, εικόνες, video και τέλος το favicon.
Στο παρακάτω γράφημα λοιπόν βλέπουμε πως για το Joomla χρειάστηκαν να σταλθούν συνολικά 301 κΒ στον client από τον server και συνολικά έγιναν 10 αιτήσεις (requests), που σημαίνει ότι η σελίδα μας επικοινώνησε με τον server άλλες 10 φορές που μεταφράζονται σε hits. Για τις μετρήσεις χρησιμοποιήθηκε το YSlow. 

Το Yslow μας δείχνει δυο σενάρια. Το πρώτο σενάριο μας λέει τι συμβαίνει όταν ένας χρήστη επισκεφτεί την ιστοσελίδα μας την πρώτη φορά και το δεύτερο σενάριο όταν το κάνει δεύτερη η περισσότερες φορές. Την πρώτη φορά φορτώνει όλα τα αρχεία ενώ την δεύτερη θα κατεβάσει μόνο όσα δεν έχει αποθηκεύσει στην μνήμη cache ο browser μας. Ας δούμε λοιπόν αναλυτικά τα σενάρια

Για το joomla την πρώτη φορά χρησιμποιήθικαν 10 αιτήσεις με συνολικό κόστος 301 kB:

Αιτήσεις Είδος Μέγεθος
1 HTML/Text 6.0K
6 JavaScript File 134.1K
2 Stylesheet File 159.7K
1 Favicon 1.1K

Τις επόμενες φορές με την χρήση cache πάλι έγιναν 10 αιτήσεις με συνολικό κόστος αρκετά χαμηλότερο στα 6.7 kB

Αιτήσεις Είδος Μέγεθος
1 HTML/Text 6.0 kB
6 JavaScript File 0 kB
2 Stylesheet File 0.6 kB
1 Favicon 0.0 kB

 

Για το Wordpress
Το ίδιο βλέπουμε και για το wordpress με την μόνη διαφορά ότι το συνολικό βάρος της σελίδας είναι μικρότερο, 260 kB
        

Αιτήσεις Είδος Μέγεθος
1 HTML/Text 7.2 kB
4 JavaScript File 122.0 kB
3 Stylesheet File 122.0 kB
1 Favicon 0.2 kB
1 Font 22.7 kB

Στο cached σενάριο έχουμε πάλι 10 http αιτήσεις και συνολικό μέγεθος σελίδας 9.6 kB       

Αιτήσεις Είδος Μέγεθος
1 HTML/Text 7.2 kB
4 JavaScript File 0.0 kB
3 Stylesheet File 2.1 kB
1 Favicon 0.2 kB
1 Font 0.0 kB

 

Για το Drupal
Για το πρώτο σενάριο το Drupal κοστίζει 165.2 κΒ ανά αίτημα αλλά κάνει 20 αιτήσεις στον server.
 

Αιτήσεις Είδος Μέγεθος
1 HTML/Text 7.6 kB
4 JavaScript File 96.1 kB
3 Stylesheet File 51.7 kB
1 CSS Image 0.8 kB
1 Image 3.4 kB
1 Favicon 5.4 kB

Στο cached σενάριο το Drupal θα κάνει 20 Http αιτήσεις με συνολικό μέγεθος 7.6 kB

Αιτήσεις Είδος Μέγεθος
1 HTML/Text 7.6 kB
3 JavaScript File 0.0 kB
13 Stylesheet File 0.0 kB
1 CSS Image 0.0 kB
1 Image 0.0 kB
1 Favicon 0.0 kB

Ας τα δούμε συνολικά σε πίνακα

  Http Requests Total Weight Prime Cache Http Request Prime Cache Total Weight
Drupal 20 165.2 kB 20 7.6 kB
Word Press 10 260 kB 10 9.6 kB
Joomla 10 301 kB 10 6.7 kB

 

Το Drupal σερβίρει την ποιό οικομική σελίδα παρότι κάνει 20 αιτήσεις, αλλά με την χρήση της cache το joomla βγαίνει νικητής.
 

Διευκρινίσεις: Τι σημαίνουν τα Http Request, Total Weight, Prime Cache Http Request Prime Cache Total Weight.



Http Request
Κάθε φορά που αιτούμαστε μια ιστοσελίδα από τον web server, αυτός αναλαμβάνει να την αναζητήσει, να την χτίσει και να την αποστείλει σε εμάς. Ο αριθμός των αιτήσεων που γίνονται στον server είναι και τα HTTP Requests. Αν δηλαδή επισκεφτώ μια ιστοσελίδα θα κάνω ένα Request. Όμως, θυμίζω ότι όταν ζητάμε μια σελίδα από τον server, αυτή μπορεί να ζητήσει επιπλέον στοιχεία όπως τις φωτογραφίες, τα Javascript αρχεία τα Css κλπ. Στο παραπάνω παράδειγμα το drupal έκανε 20 αιτήσεις ενώ το wordpress και το Joomla 10.

Total Weight
Σημαίνει το συνολικό μέγεθος όλων των αρχείων που παίρνει o browser από τον server σε kilo bytes (kB).

Prime Cache Http Request
Είναι η Cache δηλαδή η προσωρινή μνήμη στην οποία αποθηκεύονται τα request ώστε να μην ξανά γίνουν και επιβαρύνουν άσκοπα το δίκτυο.

Prime Cache Total Weight
Όταν φορτωθεί για πρώτη φορά η ιστοσελίδα, ο browser έχει την δυνατότητα να αποθηκεύσει κάποια αρχεία στην μνήμη του ώστε την επόμενη φορά να μην τα ξανά ζητήσει. Η μνήμη αυτή λέγετε cache και είναι προσωρινή. Είναι χρήσιμη αφού την επόμενη φορά που θα ζητήσω την ιστοσελίδα, τα αρχεία που απαιτούνται για την εμφάνιση της δεν θα τα ξανακατεβούν. Αυτό αυξάνει την ταχύτητα με την οποία εμφανίζονται οι σελίδες. Στην συγκεκριμένη λοιπόν περίπτωση δεν υπάρχει καμία διαφορά και στα 3 CMS.

 


Τελικά


Joomla
Το Joomla δείχνει να έχει μια απλή εγκατάσταση με την μορφή οδηγού. Με 3 βήματα το εγκατέστησα σε λιγότερο από 1 λεπτό. Την εγκατάσταση την πραγματοποίησα χωρίς να περάσω ενδεικτικό περιεχόμενο αφού υποτίθεται πως αυτό είναι σχετικό για τον κάθε χρήστη. Δείχνει να είναι βαρύ για τον server αλλά για να αρχίσουμε την δουλειά μας είναι εύκολο.

Wordpress
Το Wordpress επίσης δείχνει να έχει μια απλή εγκατάσταση με την μορφή οδηγού. Σε 3 βήματα το εγκατέστησα σε λιγότερο από 1 λεπτό. Την εγκατάσταση την πραγματοποίησα χωρίς να περάσω ενδεικτικό περιεχόμενο. Αρκετά ελαφρύ για μια απλή σελίδα blog.

Drupal
Το drupal στην αρχή με ρώτησε αν θέλω Standard εγκατάσταση ή Minimal.  Επειδή μου έχει όμως προεπιλεγμένο το Standard ακολούθησα αυτό. Η Εγκατάσταση ήταν λίγο ποιο σύνθετη ενώ χρειάστηκε να δημιουργήσω την βάση μόνος μου στην mysql. Όμως είχα αρκετές επιλογές. Την εγκατάσταση την ολοκλήρωσα σε περισσότερα βήματα. Το Site μου ήταν έτοιμο σε 5 λεπτά. Δείχνει να είναι αρκετά ποιο σύνθετο για έναν απλό χρήστη.

 

Συνεχίζετε ..


Καλέστε μας για να λάβετε συμβουλές σχετικά με την ιστοσελίδα σας. Αν θέλετε να μάθετε το πως μπορείτε να βελτιώσετε τους μηχανισμούς σας, πως να αυξήσετε τις πωλήσεις σας και πως να βελτιώσετε το ηλεκτρονικό σας μάρκετινγκ, μην διστάσετε να επικοινωνήσετε μαζί μας.