SlideShare a Scribd company logo
1 of 25
Download to read offline
Θεοδόσης Σουργκούνης
Frontend optimizations
Website Optimizations
Speed, Speed, Speed
 Καθυστέρηση στο Server
 Χρόνος εκτέλεσης (php)
 Χρόνος SQL(Queries και traffic στους servers)
 Καθυστέρηση στον Client
 Καθυστέρηση στο δίκτυο
 Δεδομένα μεταξύ του Server και του Client
 HTTPS
Request Lifetime
Browser Server
“Click”
Εμφάνιση σελίδας
• Δημιουργία Request
• Ανάλυση απάντησης
• Συγκέντρωση εικόνων,
stylesheet etc
• Ανάλυση Request
• Επικοινωνία με τη ΒΔ
• Δημιουργία Εγγράφου
• Αποστολή Απάντησης
Firebug – HTML tab
Firebug - Network tab
Chrome Developer Tools - Network
ySlow
 Network και Browser
optimizations
 Κάποια bullets πιο
σημαντικά από άλλα
ySlow - 1
1. Reduce the number of DOM elements
2. Put CSS at top/JavaScript at bottom
3. Use a Content Delivery Network
4. Compress components with gzip
5. Make fewer HTTP requests
6. Merge/Minify CSS/JavaScript
7. Reduce cookie size/use cookie-free domains
8. Add Expires headers
ySlow – Reduce the number of
DOM elements
 Χρήση μόνο όσων elements χρειάζονται για την
περιγραφή των δεδομένων
 Αποφυγή εμφωλεύσεων σε μεγάλο βάθος
 Δυναμική δημιουργία στοιχείων που δεν είναι
ορατά εξ’ αρχής
ySlow – Put CSS at top/JavaScript
at bottom
 Η CSS συμβάλει στην εμφάνιση της σελίδας
 Θέλουμε να φορτώσει όσο το δυνατόν πιο γρήγορα
 Την τοποθετούμε στην αρχή του εγγράφου μας, ως
παιδί στο <head>
 Φορτώνει παράλληλα με τις εικόνες της σελίδας
μας
ySlow – Put CSS at top/JavaScript
at bottom
 Η JavaScript τρέχει αφού φορτωθεί η υπόλοιπη
σελίδα.
 Τις περισσότερες φορές, δε συμβάλει στην
εμφάνισή της.
 Την εισάγουμε στο τέλος του εγγράφου, αμέσως
πριν το </body>
 Αν φορτωθεί πριν από στατικό περιεχόμενο, το
καθυστερεί.
ySlow – Put CSS at top/JavaScript
at bottom
ySlow – Put CSS at top/JavaScript
at bottom
ySlow – Put CSS at top/JavaScript
at bottom
ySlow – Content Delivery Network
 Πάντα χρησιμοποιούμε CDN που παρέχονται από
άλλους (συνήθως google)
 Σε περίπτωση που έχουμε πολλούς,
κατανεμημένους χρήστες, χρησιμοποιούμε δικό
μας CDN για στατικό περιεχόμενο:
CSS/JS/πολυμέσα
 Σχετικά φθηνό, από την Amazon ή αντίστοιχα clouds
ySlow – Compress components
with gzip
 Τα έγγραφα κειμένου, όπως η CSS, η JS και η
HTML μπορούν να συμπιεστούν σε λόγους της
τάξης του 70%.
 Η συμπίεση μέσω gzip υποστηρίζεται από όλους
τους browsers και τους web servers.
 Γίνεται ενεργοποιώντας μια ρύθμιση, δεν
επηρεάζει τον προγραμματιστή ή τον χρήστη.
ySlow – Make fewer HTTP
Requests
 1 request για το Document
 1 request για τη CSS
 Merge-Minify CSS
 1-2 requests για την JavaScript
 Merge-Minify javaScript
 1 request για CSS backgrounds
 Sprites
ySlow – sprites
ySlow –Merge CSS/JavaScript
 Κατά την ανάπτυξη του κώδικά μας, πολλές φορές
είναι βολικό να έχουμε πολλά αρχεία για τη CSS
και τη JavaScript, ένα για κάθε σελίδα.
 Σε επίπεδο production, θέλουμε να έχουμε ένα
αρχείο ώστε να μειώσουμε τον αριθμό των
request/σελίδα
 Κάνουμε merge τα αρχεία μας, κατά τη διάρκεια
του commit, ως post-commit hook
ySlow –Minify CSS/JavaScript
 Στη CSS και τη JavaScript υπάρχουν πολλά
whitespaces, σχόλια κλπ.
 Δε χρειάζονται για τη λειτουργία του κώδικά μας,
υπάρχουν μόνο για την αναγνωσιμότητά του.
 Χρησιμοποιούμε αυτοματοποιημένα εργαλεία για
να κάνουμε minify (να αφαιρέσουμε
whitespace/comments)
 Μπορεί να γίνει κατά τη διάρκεια του commit ως
post-commit hook
 Οι διαδικασίες minify και merge μπορούν να
γίνουν από το ίδιο post-commit script
ySlow – Reduce cookie size/use
cookie-free domains
 Με κάθε request, ο χρήστης στέλνει όλα τα
cookies του ασυμπίεστα (non-gzipped).
 Όσο λιγότερα cookies, τόσο το καλύτερο για την
ταχύτητα των request
 Το στατικό περιεχόμενο δε χρειάζεται τα cookies
 Χρησιμοποιήστε urls όπως: static.example.com
για εικόνες, css, js. Βεβαιωθείτε ότι δεν
αποστέλλονται τα cookies σε αυτά τα urls.
ySlow – Expires headers
 Τα στατικά δεδομένα παραμένουν τα ίδια, πάντα.
 Δε χρειάζεται να τα φορτώνουν οι χρήστες κάθε
φορά.
 Γι’ αυτό χρησιμοποιούμε “expires” headers.
 Expires: Fri, 11 Feb 2022 15:54:57 GMT
 Θεωρητικά, όταν μπαίνει ο χρήστης σε μια σελίδα
για 2η φορά, θα πρέπει να κάνει μόνο 1 request
ySlow - 2
9. Avoid empty src or href
10. Reduce DNS lookups
11. Avoid url redirects
ySlow - 3
12. Avoid HTTP 404 (Not Found) error
13. Use a favicon - Make it small and cacheable
14. Avoid @import or inline css/JS
ySlow - 4
15. Optimize Images (lossless compression)
16. Do not scale images in HTML

More Related Content

Viewers also liked

Google maps: a quick approach (Greek)
Google maps: a quick approach (Greek)Google maps: a quick approach (Greek)
Google maps: a quick approach (Greek)Theodosis Sourgounis
 
Conventions of magazine front covers
Conventions of magazine front coversConventions of magazine front covers
Conventions of magazine front coversk13086
 
The Six Highest Performing B2B Blog Post Formats
The Six Highest Performing B2B Blog Post FormatsThe Six Highest Performing B2B Blog Post Formats
The Six Highest Performing B2B Blog Post FormatsBarry Feldman
 
The Outcome Economy
The Outcome EconomyThe Outcome Economy
The Outcome EconomyHelge Tennø
 

Viewers also liked (7)

Web sql: a quick approach (Greek)
Web sql: a quick approach (Greek)Web sql: a quick approach (Greek)
Web sql: a quick approach (Greek)
 
jQuery: a quick approach (Greek)
jQuery: a quick approach (Greek)jQuery: a quick approach (Greek)
jQuery: a quick approach (Greek)
 
Ext JS (Greek)
Ext JS (Greek)Ext JS (Greek)
Ext JS (Greek)
 
Google maps: a quick approach (Greek)
Google maps: a quick approach (Greek)Google maps: a quick approach (Greek)
Google maps: a quick approach (Greek)
 
Conventions of magazine front covers
Conventions of magazine front coversConventions of magazine front covers
Conventions of magazine front covers
 
The Six Highest Performing B2B Blog Post Formats
The Six Highest Performing B2B Blog Post FormatsThe Six Highest Performing B2B Blog Post Formats
The Six Highest Performing B2B Blog Post Formats
 
The Outcome Economy
The Outcome EconomyThe Outcome Economy
The Outcome Economy
 

Similar to Frontend Optimizations (Greek)

Το Azure δεν είναι χορτοφάγο! - 59ο DotNetZone Event
Το Azure δεν είναι χορτοφάγο! - 59ο DotNetZone EventΤο Azure δεν είναι χορτοφάγο! - 59ο DotNetZone Event
Το Azure δεν είναι χορτοφάγο! - 59ο DotNetZone EventPanagiotis Kanavos
 
Εισαγωγήoooooooooooooooooooooooooooooooo
ΕισαγωγήooooooooooooooooooooooooooooooooΕισαγωγήoooooooooooooooooooooooooooooooo
Εισαγωγήooooooooooooooooooooooooooooooooandreasabiou
 
Html – basics of static html pages
Html – basics of static html pagesHtml – basics of static html pages
Html – basics of static html pagesManolis Kosmidis
 
2η διάλεξη Τεχνολογίες Παγκόσμιου Ιστού
2η διάλεξη Τεχνολογίες Παγκόσμιου Ιστού2η διάλεξη Τεχνολογίες Παγκόσμιου Ιστού
2η διάλεξη Τεχνολογίες Παγκόσμιου ΙστούManolis Vavalis
 
Εισαγωγή στο WordPress και στην ανάπτυξη WordPress Plugins & Themes
Εισαγωγή στο WordPress και στην ανάπτυξη WordPress Plugins & ThemesΕισαγωγή στο WordPress και στην ανάπτυξη WordPress Plugins & Themes
Εισαγωγή στο WordPress και στην ανάπτυξη WordPress Plugins & Themesngtech_eu
 
στατικες δυναμικες νες
στατικες δυναμικες νεςστατικες δυναμικες νες
στατικες δυναμικες νεςStauroula Kakaraki
 
Advanced css and sass flexbox, grid, animations and more!
Advanced css and sass  flexbox, grid, animations and more!Advanced css and sass  flexbox, grid, animations and more!
Advanced css and sass flexbox, grid, animations and more!rapidbounce
 
Create Websites with HTML 5.0
Create Websites with HTML 5.0Create Websites with HTML 5.0
Create Websites with HTML 5.0DJ Dragon King
 
Γνωριμία με την ASP.NET 2.0
Γνωριμία με την ASP.NET 2.0Γνωριμία με την ASP.NET 2.0
Γνωριμία με την ASP.NET 2.0Stelios Karabasakis
 
Ruby On Rails Introduction [Εισαγωγή στο Rails]
Ruby On Rails Introduction [Εισαγωγή στο Rails]Ruby On Rails Introduction [Εισαγωγή στο Rails]
Ruby On Rails Introduction [Εισαγωγή στο Rails]Nikos Dimitrakopoulos
 
Wordpress σε 2, 3... γλώσσες, γιατί και πώς;
Wordpress σε 2, 3... γλώσσες, γιατί και πώς;Wordpress σε 2, 3... γλώσσες, γιατί και πώς;
Wordpress σε 2, 3... γλώσσες, γιατί και πώς;Martin Linkov
 
KnowCrunch - SEO Report - Case Study: cookshop.gr
KnowCrunch - SEO Report - Case Study: cookshop.grKnowCrunch - SEO Report - Case Study: cookshop.gr
KnowCrunch - SEO Report - Case Study: cookshop.grKnowcrunch
 
SEO report for ddplastics
SEO report for ddplasticsSEO report for ddplastics
SEO report for ddplasticsKnowcrunch
 
TechSaloniki 2017 - Google Tag Manager: Ευελιξία και δύναμη στην ιστοσελίδα σας
TechSaloniki 2017 - Google Tag Manager: Ευελιξία και δύναμη στην ιστοσελίδα σαςTechSaloniki 2017 - Google Tag Manager: Ευελιξία και δύναμη στην ιστοσελίδα σας
TechSaloniki 2017 - Google Tag Manager: Ευελιξία και δύναμη στην ιστοσελίδα σαςPanagiotis Tzamtzis
 
Πίθος - Αρχιτεκτονική και τεχνολογίες .NET
Πίθος - Αρχιτεκτονική και τεχνολογίες .NETΠίθος - Αρχιτεκτονική και τεχνολογίες .NET
Πίθος - Αρχιτεκτονική και τεχνολογίες .NETPanagiotis Kanavos
 
Περατζάδα στο Azure Event Hub
Περατζάδα στο Azure Event HubΠερατζάδα στο Azure Event Hub
Περατζάδα στο Azure Event HubPanagiotis Kanavos
 

Similar to Frontend Optimizations (Greek) (20)

Το Azure δεν είναι χορτοφάγο! - 59ο DotNetZone Event
Το Azure δεν είναι χορτοφάγο! - 59ο DotNetZone EventΤο Azure δεν είναι χορτοφάγο! - 59ο DotNetZone Event
Το Azure δεν είναι χορτοφάγο! - 59ο DotNetZone Event
 
Εισαγωγήoooooooooooooooooooooooooooooooo
ΕισαγωγήooooooooooooooooooooooooooooooooΕισαγωγήoooooooooooooooooooooooooooooooo
Εισαγωγήoooooooooooooooooooooooooooooooo
 
Html – basics of static html pages
Html – basics of static html pagesHtml – basics of static html pages
Html – basics of static html pages
 
2η διάλεξη Τεχνολογίες Παγκόσμιου Ιστού
2η διάλεξη Τεχνολογίες Παγκόσμιου Ιστού2η διάλεξη Τεχνολογίες Παγκόσμιου Ιστού
2η διάλεξη Τεχνολογίες Παγκόσμιου Ιστού
 
Εισαγωγή στο WordPress και στην ανάπτυξη WordPress Plugins & Themes
Εισαγωγή στο WordPress και στην ανάπτυξη WordPress Plugins & ThemesΕισαγωγή στο WordPress και στην ανάπτυξη WordPress Plugins & Themes
Εισαγωγή στο WordPress και στην ανάπτυξη WordPress Plugins & Themes
 
στατικες δυναμικες νες
στατικες δυναμικες νεςστατικες δυναμικες νες
στατικες δυναμικες νες
 
Advanced css and sass flexbox, grid, animations and more!
Advanced css and sass  flexbox, grid, animations and more!Advanced css and sass  flexbox, grid, animations and more!
Advanced css and sass flexbox, grid, animations and more!
 
Ajax
AjaxAjax
Ajax
 
Create Websites with HTML 5.0
Create Websites with HTML 5.0Create Websites with HTML 5.0
Create Websites with HTML 5.0
 
Γνωριμία με την ASP.NET 2.0
Γνωριμία με την ASP.NET 2.0Γνωριμία με την ASP.NET 2.0
Γνωριμία με την ASP.NET 2.0
 
Ruby On Rails Introduction [Εισαγωγή στο Rails]
Ruby On Rails Introduction [Εισαγωγή στο Rails]Ruby On Rails Introduction [Εισαγωγή στο Rails]
Ruby On Rails Introduction [Εισαγωγή στο Rails]
 
Μια εισαγωγή στο Bootstrap
Μια εισαγωγή στο Bootstrap Μια εισαγωγή στο Bootstrap
Μια εισαγωγή στο Bootstrap
 
Wordpress σε 2, 3... γλώσσες, γιατί και πώς;
Wordpress σε 2, 3... γλώσσες, γιατί και πώς;Wordpress σε 2, 3... γλώσσες, γιατί και πώς;
Wordpress σε 2, 3... γλώσσες, γιατί και πώς;
 
KnowCrunch - SEO Report - Case Study: cookshop.gr
KnowCrunch - SEO Report - Case Study: cookshop.grKnowCrunch - SEO Report - Case Study: cookshop.gr
KnowCrunch - SEO Report - Case Study: cookshop.gr
 
SEO report for ddplastics
SEO report for ddplasticsSEO report for ddplastics
SEO report for ddplastics
 
TechSaloniki 2017 - Google Tag Manager: Ευελιξία και δύναμη στην ιστοσελίδα σας
TechSaloniki 2017 - Google Tag Manager: Ευελιξία και δύναμη στην ιστοσελίδα σαςTechSaloniki 2017 - Google Tag Manager: Ευελιξία και δύναμη στην ιστοσελίδα σας
TechSaloniki 2017 - Google Tag Manager: Ευελιξία και δύναμη στην ιστοσελίδα σας
 
Eisagogi
EisagogiEisagogi
Eisagogi
 
Πίθος - Αρχιτεκτονική και τεχνολογίες .NET
Πίθος - Αρχιτεκτονική και τεχνολογίες .NETΠίθος - Αρχιτεκτονική και τεχνολογίες .NET
Πίθος - Αρχιτεκτονική και τεχνολογίες .NET
 
Περατζάδα στο Azure Event Hub
Περατζάδα στο Azure Event HubΠερατζάδα στο Azure Event Hub
Περατζάδα στο Azure Event Hub
 
Beauty salon
Beauty salonBeauty salon
Beauty salon
 

Frontend Optimizations (Greek)

  • 2. Website Optimizations Speed, Speed, Speed  Καθυστέρηση στο Server  Χρόνος εκτέλεσης (php)  Χρόνος SQL(Queries και traffic στους servers)  Καθυστέρηση στον Client  Καθυστέρηση στο δίκτυο  Δεδομένα μεταξύ του Server και του Client  HTTPS
  • 3. Request Lifetime Browser Server “Click” Εμφάνιση σελίδας • Δημιουργία Request • Ανάλυση απάντησης • Συγκέντρωση εικόνων, stylesheet etc • Ανάλυση Request • Επικοινωνία με τη ΒΔ • Δημιουργία Εγγράφου • Αποστολή Απάντησης
  • 7. ySlow  Network και Browser optimizations  Κάποια bullets πιο σημαντικά από άλλα
  • 8. ySlow - 1 1. Reduce the number of DOM elements 2. Put CSS at top/JavaScript at bottom 3. Use a Content Delivery Network 4. Compress components with gzip 5. Make fewer HTTP requests 6. Merge/Minify CSS/JavaScript 7. Reduce cookie size/use cookie-free domains 8. Add Expires headers
  • 9. ySlow – Reduce the number of DOM elements  Χρήση μόνο όσων elements χρειάζονται για την περιγραφή των δεδομένων  Αποφυγή εμφωλεύσεων σε μεγάλο βάθος  Δυναμική δημιουργία στοιχείων που δεν είναι ορατά εξ’ αρχής
  • 10. ySlow – Put CSS at top/JavaScript at bottom  Η CSS συμβάλει στην εμφάνιση της σελίδας  Θέλουμε να φορτώσει όσο το δυνατόν πιο γρήγορα  Την τοποθετούμε στην αρχή του εγγράφου μας, ως παιδί στο <head>  Φορτώνει παράλληλα με τις εικόνες της σελίδας μας
  • 11. ySlow – Put CSS at top/JavaScript at bottom  Η JavaScript τρέχει αφού φορτωθεί η υπόλοιπη σελίδα.  Τις περισσότερες φορές, δε συμβάλει στην εμφάνισή της.  Την εισάγουμε στο τέλος του εγγράφου, αμέσως πριν το </body>  Αν φορτωθεί πριν από στατικό περιεχόμενο, το καθυστερεί.
  • 12. ySlow – Put CSS at top/JavaScript at bottom
  • 13. ySlow – Put CSS at top/JavaScript at bottom
  • 14. ySlow – Put CSS at top/JavaScript at bottom
  • 15. ySlow – Content Delivery Network  Πάντα χρησιμοποιούμε CDN που παρέχονται από άλλους (συνήθως google)  Σε περίπτωση που έχουμε πολλούς, κατανεμημένους χρήστες, χρησιμοποιούμε δικό μας CDN για στατικό περιεχόμενο: CSS/JS/πολυμέσα  Σχετικά φθηνό, από την Amazon ή αντίστοιχα clouds
  • 16. ySlow – Compress components with gzip  Τα έγγραφα κειμένου, όπως η CSS, η JS και η HTML μπορούν να συμπιεστούν σε λόγους της τάξης του 70%.  Η συμπίεση μέσω gzip υποστηρίζεται από όλους τους browsers και τους web servers.  Γίνεται ενεργοποιώντας μια ρύθμιση, δεν επηρεάζει τον προγραμματιστή ή τον χρήστη.
  • 17. ySlow – Make fewer HTTP Requests  1 request για το Document  1 request για τη CSS  Merge-Minify CSS  1-2 requests για την JavaScript  Merge-Minify javaScript  1 request για CSS backgrounds  Sprites
  • 19. ySlow –Merge CSS/JavaScript  Κατά την ανάπτυξη του κώδικά μας, πολλές φορές είναι βολικό να έχουμε πολλά αρχεία για τη CSS και τη JavaScript, ένα για κάθε σελίδα.  Σε επίπεδο production, θέλουμε να έχουμε ένα αρχείο ώστε να μειώσουμε τον αριθμό των request/σελίδα  Κάνουμε merge τα αρχεία μας, κατά τη διάρκεια του commit, ως post-commit hook
  • 20. ySlow –Minify CSS/JavaScript  Στη CSS και τη JavaScript υπάρχουν πολλά whitespaces, σχόλια κλπ.  Δε χρειάζονται για τη λειτουργία του κώδικά μας, υπάρχουν μόνο για την αναγνωσιμότητά του.  Χρησιμοποιούμε αυτοματοποιημένα εργαλεία για να κάνουμε minify (να αφαιρέσουμε whitespace/comments)  Μπορεί να γίνει κατά τη διάρκεια του commit ως post-commit hook  Οι διαδικασίες minify και merge μπορούν να γίνουν από το ίδιο post-commit script
  • 21. ySlow – Reduce cookie size/use cookie-free domains  Με κάθε request, ο χρήστης στέλνει όλα τα cookies του ασυμπίεστα (non-gzipped).  Όσο λιγότερα cookies, τόσο το καλύτερο για την ταχύτητα των request  Το στατικό περιεχόμενο δε χρειάζεται τα cookies  Χρησιμοποιήστε urls όπως: static.example.com για εικόνες, css, js. Βεβαιωθείτε ότι δεν αποστέλλονται τα cookies σε αυτά τα urls.
  • 22. ySlow – Expires headers  Τα στατικά δεδομένα παραμένουν τα ίδια, πάντα.  Δε χρειάζεται να τα φορτώνουν οι χρήστες κάθε φορά.  Γι’ αυτό χρησιμοποιούμε “expires” headers.  Expires: Fri, 11 Feb 2022 15:54:57 GMT  Θεωρητικά, όταν μπαίνει ο χρήστης σε μια σελίδα για 2η φορά, θα πρέπει να κάνει μόνο 1 request
  • 23. ySlow - 2 9. Avoid empty src or href 10. Reduce DNS lookups 11. Avoid url redirects
  • 24. ySlow - 3 12. Avoid HTTP 404 (Not Found) error 13. Use a favicon - Make it small and cacheable 14. Avoid @import or inline css/JS
  • 25. ySlow - 4 15. Optimize Images (lossless compression) 16. Do not scale images in HTML