Μεθοδολογία
Σκοπός αυτής της έρευνας είναι η αξιολόγηση της απόδοσης των Ελληνικών πακέτων shared hosting. Τα βασικά κριτήρια για αυτήν την αξιολόγηση είναι η ταχύτητα απόκρισης, η μέγιστη ταχύτητα επεξεργασίας (peak performance) καθώς και η ταυτόχρονη εξυπηρέτηση μεγάλου πλήθους επισκεπτών (consistency).
Για να μετρήσουμε τα προαναφερθέντα στοιχεία, χρησιμοποιούμε τις παρακάτω τεχνικές:
- Response Time
- TTFB
- WP Benchmark Tool
- WP Performance Tester
- Grafana K6
Ξεκινήσαμε με μια απλή εγκατάσταση του Woodmart Theme, ενός από τα γνωστότερα Themes για WooCommerce. Εγκαταστήσαμε το WP Benchmark Tool και το WP Performance Tester. Αντιγράψαμε την εγκατάσταση μέσω του duplicator σε όλα τα πακέτα ώστε να έχουμε παντού μια πανομοιότυπη εγκατάσταση WP & WooCommerce.
Φροντίσαμε όλα τα πακέτα από όλες τις εταιρείες να έχουν επιλεγμένη την PHP 8.3
Είναι σημαντικό να τονίσουμε ότι δεν έχουμε εγκαταστήσει κανένα caching plugin στο WP και δεν έχουμε αλλάξει καμία παράμετρο optimization στο WordPress ή στο theme.
Response Time
Για να μετρήσουμε το response time τρέξαμε μια απλή εντολή ping. Μέσα από τα windows, ανοίξαμε το command prompt και τρέξαμε την εντολή:
ping hosting.gr -t
Όπου hosting.gr το αντικαθιστάτε με το Domain name του κάθε πακέτου.
Περιμένουμε να κάνει τουλάχιστον 100 ping requests και μετά σταματάμε την εντολή με το πάτημα του συνδυασμού Ctrl+C.
Εκεί μας έρχεται μια απάντηση με κάποια στατιστικά από τα οποία εμείς κρατάμε το Average όπου είναι και ο μέσος όρος

TTFB
Για να μετρήσουμε το TTFB χρησιμοποιήσαμε το Mozilla Firefox.
Δεν τον είχαμε ξαναχρησιμοποιήσει για άλλη εργασία στον ίδιο υπολογιστή και φροντίσαμε να είναι διεγραμμένο το πλήρες ιστορικό του.
Επίσης στο ενδιάμεσο, είχαμε αφήσει να περάσει τουλάχιστον μία εβδομάδα από την τελευταία εργασία ή επίσκεψη που κάναμε στο εκάστοτε πακέτο, ώστε να μειώσουμε την πιθανότητα να επέμβει κάποια cache.
- Ανοίγουμε το Inspect πατώντας δεξί κλικ και Inspect στην αρχική του Firefox.
- Επιλέγουμε την καρτέλα Network.
- Γράφουμε στη μπάρα της διεύθυνσης το domain του πακέτου.
- Επιλέγουμε το πρώτο στοιχείο στο Network που είναι το File (/) ή αλλιώς το Initiator (document).
- Στο δεξιά πεδίο επιλέγουμε Timings.
- Βλέπουμε το νούμερο στο downloaded που περιέχει τα Blocked, DNS Resolution, Connecting, TLS Setup, Sending & Waiting.

Φροντίζουμε να τρέξουμε όλα τα tests πάνω κάτω στον ίδιο χρόνο (πχ 10-11πμ) εξομοιώνοντας μια πραγματική επίσκεψη στην ιστοσελίδα. Θα ήταν άδικο να τρέξουμε σε μια εταιρεία το test τα ξεημερώματα που μπορεί να μην έχει καθόλου κίνηση ο server.
WP Benchmark Tool
Αφού εγκαταστήσαμε το δωρεάν plugin, το βρίσκουμε στο διαχειριστικό του WordPress στην Κατηγορία Tools -> WP Benchmark Tool.
Φροντίζουμε να είναι:
❌ Απενεργοποιημένο το Run each test only once, instead of five times.
✅ Ενεργοποιημένο το Skip persistent object cache tests
✅ Τσεκαρισμένο το Accept terms of usage
✅ Τσεκαρισμένο το Consent about GDPR
Πατάμε το Save Settings γιατί αλλιώς δεν αποθηκεύονται τα αποτελέσματα και μετά τρέχουμε το Start Benchmark

WP Performance Tester
Αφού εγκαταστήσαμε το δωρεάν plugin, το βρίσκουμε στο διαχειριστικό του WordPress στην Κατηγορία Tools -> WP Performance Tester.
- Πατάμε το κουμπί Begin Performance Test
- Καταγράφουμε τα αποτελέσματα σε ένα excel
- Επαναλαμβάνουμε τη διαδικασία για 20 φορές
- Βγάζουμε το μέσο όρο των αποτελεσμάτων από το excel και τον χρησιμοποιούμε για να συγκρίνουμε τα πακέτα.

Grafana K6
Κάναμε ένα λογαριασμό στο Grafana Cloud Κ6
Φτιάξαμε ένα νέο Project και μέσα σε αυτό δημιουργήσαμε ένα test για κάθε πακέτο φιλοξενίας. Παραθέτουμε παρακάτω το script που χρησιμοποιήσαμε για τη δοκιμή
import { sleep } from ‘k6’import { Rate } from ‘k6/metrics’import http from ‘k6/http’
// let’s collect all errors in one metriclet errorRate = new Rate(‘error_rate’)
// See https://k6.io/docs/using-k6/optionsexport let options = {batch: 1,throw: true,stages: [{ duration: ‘2m’, target: 100 },],ext: {loadimpact: {distribution: {Milan: { loadZone: ‘amazon:it:milan’, percent: 100 },},},},}
export default function () {let params = {headers: { ‘X-CustomHeader’: ‘1’ },};let res = http.get(‘https://hosting.gr’, params)
errorRate.add(res.status >= 400)
sleep(1)}
