Ιmage Optimization Web Service - Beta Testing

Σε αυτή την περιοχή μπορείτε να βρείτε ή να αναζητήσετε πληροφορίες σχετικές με την PHP

Συντονιστές: WebDev Moderators, Super-Moderators, PHP Moderators

Απάντηση
Άβαταρ μέλους
Jimaek
Δημοσιεύσεις: 608
Εγγραφή: 18 Ιαν 2010 22:54
Επικοινωνία:

Ιmage Optimization Web Service - Beta Testing

Δημοσίευση από Jimaek » 24 Ιαν 2012 19:37

Φτιάχνω ένα απλό web service το οποιο ενεργει ως CDN για εικονες.
Αυτό που κερδίζει ο χρήστης είναι η ταχύτητα και ή μειωμένη χρήση traffic.

Τι κάνει
-Optimization της εικόνας μειώνοντας το μέγεθος χωρίς επιπτώσεις στην ποιότητα
-Caching της εικόνας στον server για 30 μέρες
-Caching της εικόνας σε CDN
-Headers για γίνει σωστό caching της εικόνας από τον browser του χρήστη


Εγκατάσταση
Ας πούμε έχουμε την εικόνα
http://www.newsit.gr/files/Image/0Tech3 ... 27_355.jpg
έτσι θα είναι το link για την optimized εικόνα
http://www.newsit.gr.gocdn.eu/files/Ima ... 27_355.jpg

Δηλαδή απλός προσθέτουμε gocdn.eu στο τέλος του domain κάνοντας το newsit.gr subdomain.

Σε WordPress μπορειτε να το ενεργοποιήσετε αυτόματα για όλες τις εικόνες χρησιμοποιώντας το plugin W3 Total Cache ή οποιοδήποτε άλλο CDN plugin που επιτρέπει να επιλέξεις τον τύπο τον αρχείων που θέλεις να κάνεις rewrite. (από default γίνονται rewrite και τα js/css/.. αρχεία)
Και ο άλλος τρόπος είναι με htaccess rewrite.

Σε άλλα CMS δεν ξέρω, γιαυτό όποιος το δοκιμάσει ας γράψει οδηγίες για το πως γίνετε.

Μore info
Το Service ΔΕΝ είναι image hosting, η οriginal εικόνα πρέπει να μείνει στην θέση της.
Το πρώτο load της κάθε εικόνας θα είναι ποιο αργό επειδή αυτή η εικόνα θα πρέπει να κατεβεί στον server.
Οι τύποι αρχείων που επιτρέπονται είναι οι jpeg/jpg/png/gif. Αν νομίζετε πως πρέπει να βάλω και άλλους πείτε μου.
Μπορείτε να δείτε μόνοι σας την διαφορά στην ταχύτητα χρησιμοποιώντας firebug και το tab Network.
Αν υπάρξει απήχηση, το service για αρχή θα μεταφερθεί σε έναν δυνατό dedi και μετά αναλόγως το Load βλέπουμε, αλλά και τώρα το bonus στην ταχύτητα είναι αισθητό.
Επίσης στο μέλλον σκοπεύω να το κάνω κανονικότατο service με Registration/Dashboard/Logs/Stats...
Beta Benchmarks >

Όποιος ενδιαφέρεται μπορεί να το δοκιμάσει και αν θέλει να το ενεργοποιήσει στο site του. Δεν υπάρχει κίνδυνος.
Θα χαρώ να διαβάσω τα bugs που συναντήσατε, features που θα θέλατε να δειτε, benchmarks που κάνατε. (και ιδέες για όνομα)

Ευχαριστώ
Τελευταία επεξεργασία από το μέλος Jimaek την 05 Φεβ 2012 18:35, έχει επεξεργασθεί 2 φορές συνολικά.

Άβαταρ μέλους
Rapid-eraser
WebDev Moderator
Δημοσιεύσεις: 6851
Εγγραφή: 05 Απρ 2003 17:50
Τοποθεσία: Πειραιάς
Επικοινωνία:

Ιmage Optimization Web Service - Beta Testing

Δημοσίευση από Rapid-eraser » 29 Ιαν 2012 11:43

Features:

1) Edge location εκτός Ολλανδίας ή και Ευρώπης έχεις σκεφτεί;
2) Invalidation service και Custom timeouts
3) δώσε access σε cnames για να μπορείς να δώσεις brand-less το service

Thumbs up για την προσπάθεια.
Cu, Rapid-eraser, Tα αγαθά copies κτώνται.
Love is like oxygen, You get too much you get too high
Not enough and you're gonna die, Love gets you high

Άβαταρ μέλους
Jimaek
Δημοσιεύσεις: 608
Εγγραφή: 18 Ιαν 2010 22:54
Επικοινωνία:

Ιmage Optimization Web Service - Beta Testing

Δημοσίευση από Jimaek » 30 Ιαν 2012 15:47

1) Ναι εννοείτε, αλλά αυτά θα μπουν μπρος όταν και αν γίνει δημοφιλές (έστω και λίγο).
2) Εννοείς κάτι σαν parameters στο τέλος του url? Λόγο της δομής κάτι τέτοιο θα είναι δύσκολο να γίνει. Τι λες για ένα απλό API?
3) Working on it. Τώρα κάνω τις δοκιμές

Ευχαριστώ

Άβαταρ μέλους
Rapid-eraser
WebDev Moderator
Δημοσιεύσεις: 6851
Εγγραφή: 05 Απρ 2003 17:50
Τοποθεσία: Πειραιάς
Επικοινωνία:

Ιmage Optimization Web Service - Beta Testing

Δημοσίευση από Rapid-eraser » 30 Ιαν 2012 16:07

όχι το invalidation ενός object στα cdn είναι η δυνατότητα να μπορείς με κάποιο τρόπο προγραμματιστικό (μέσο κάποιου api λογικά) να κάνεις invalidate την cache για κάποιο object ( να μπορέσεις να το αφαιρέσεις δηλαδή μέσα από την cache/CDN )

Το δεύτερο μέρος με τα custom timeouts παίζει ως εξής:
Αν δεν στείλω header για expire βάζεις ένα default timeout στο object ενώ αν παρέχω ( από τον origin server ) κάποιο header τότε τον κάνεις respect και κάνεις invalidate/expire το object όποτε το έχω ορίσει εγώ.

Και για να μην μπερδευτούμε object εννοώ οτιδήποτε αρχείο τσιμπήσεις μέσα στο CDN από το origin.
Cu, Rapid-eraser, Tα αγαθά copies κτώνται.
Love is like oxygen, You get too much you get too high
Not enough and you're gonna die, Love gets you high

Άβαταρ μέλους
Jimaek
Δημοσιεύσεις: 608
Εγγραφή: 18 Ιαν 2010 22:54
Επικοινωνία:

Ιmage Optimization Web Service - Beta Testing

Δημοσίευση από Jimaek » 30 Ιαν 2012 16:28

Ναι κατάλαβα τι εννοείς απλός ρώταγα αν το ήθελες ως parameters στο url πχ
...?invalidateCache=go ή ως κανονικό API

Στα timeouts το πρόβλημα είναι πως σχεδόν πάντα υπάρχει ένα default expire που έβαλε το ένα ή το άλλο soft. Οπότε δεν έχω τρόπο να καταλάβω αν ο χρήστης όντως θέλει να έχει μικρο expire ή απλός είναι η default ρύθμιση και ο χρήστης δεν έχει ιδέα. Γιαυτό άλλωστε διάλεξα τις εικόνες και όχι css/js αρχεια, επειδή μπορώ ελεύθερα να τις κάνω caching για μεγάλα χρονικά διαστήματα χωρίς πρόβλημα.

Άβαταρ μέλους
Rapid-eraser
WebDev Moderator
Δημοσιεύσεις: 6851
Εγγραφή: 05 Απρ 2003 17:50
Τοποθεσία: Πειραιάς
Επικοινωνία:

Ιmage Optimization Web Service - Beta Testing

Δημοσίευση από Rapid-eraser » 30 Ιαν 2012 16:39

Για τα timeouts μπορείς να κάνεις ότι κάνουν όλα τα CDN :) την ώρα που κάνεις το pull από το origin τσεκάρεις τα headers που στέλνει ο web server μαζί με το αρχείο και κάνεις extract το expire από εκεί :)

Οπότε το πας by convention ότι ο χρήστης είναι υπεύθυνος να στέλνει headers για το timeout αλλιώς βάζεις εσύ ένα timeout από μόνος σου.
Cu, Rapid-eraser, Tα αγαθά copies κτώνται.
Love is like oxygen, You get too much you get too high
Not enough and you're gonna die, Love gets you high

Άβαταρ μέλους
Jimaek
Δημοσιεύσεις: 608
Εγγραφή: 18 Ιαν 2010 22:54
Επικοινωνία:

Ιmage Optimization Web Service - Beta Testing

Δημοσίευση από Jimaek » 30 Ιαν 2012 16:44

Αυτό σκεφτόμουν και εγώ απλός έτσι θα χάνετε μέρος της αποτελεσματικότητας του service χωρίς κανένα λόγο.
Οι εικόνες δεν γίνονται updated τόσο συχνά ώστε να χρειάζονται μικρο expire, και όταν γίνονται νομίζω το flush μεσώ του API θα είναι αρκετό.

Άβαταρ μέλους
Rapid-eraser
WebDev Moderator
Δημοσιεύσεις: 6851
Εγγραφή: 05 Απρ 2003 17:50
Τοποθεσία: Πειραιάς
Επικοινωνία:

Ιmage Optimization Web Service - Beta Testing

Δημοσίευση από Rapid-eraser » 30 Ιαν 2012 16:50

Η δική μου εμπειρία από το Amazon CloudFront έχει δείξει ότι 2-3 μέρες είναι αρκετές για το invalidation. Ακόμα και για site με μεγάλη κίνηση (εφημερίδας/αθλητικό) οι περισσότεροι επισκέπτες δεν επανέρχονται εύκολα σε ένα άρθρο που είναι πάνω από 1 βδομάδα πίσω.

Σκέψου τώρα κάθε μέρα να παράγεις πχ 50-100mb καινούριου content εικόνας που δεν θα γίνεται invalidate σε 1 βδομάδα... εκτός και αν δεν έχεις θέμα storage οπότε πάω πάσο.
Cu, Rapid-eraser, Tα αγαθά copies κτώνται.
Love is like oxygen, You get too much you get too high
Not enough and you're gonna die, Love gets you high

Άβαταρ μέλους
cherouvim
Script Master
Δημοσιεύσεις: 3137
Εγγραφή: 13 Ιούλ 2005 22:56
Τοποθεσία: Athens, Greece
Επικοινωνία:

Ιmage Optimization Web Service - Beta Testing

Δημοσίευση από cherouvim » 30 Ιαν 2012 16:59

Ωραίος.

Γιατί δεν το κάνεις με URL της παρακάτω μορφής;

Κώδικας: Επιλογή όλων

http://gocdn.eu/www.example.com/image.jpg

Άβαταρ μέλους
Jimaek
Δημοσιεύσεις: 608
Εγγραφή: 18 Ιαν 2010 22:54
Επικοινωνία:

Ιmage Optimization Web Service - Beta Testing

Δημοσίευση από Jimaek » 30 Ιαν 2012 17:03

cherouvim έγραψε:Ωραίος.

Γιατί δεν το κάνεις με URL της παρακάτω μορφής;

Κώδικας: Επιλογή όλων

http://gocdn.eu/www.example.com/image.jpg
Θα μπορούσα αλλά μου φάνηκε ποιο ωραίο και επαγγελματικό έτσι.
Rapid-eraser έγραψε: Σκέψου τώρα κάθε μέρα να παράγεις πχ 50-100mb καινούριου content εικόνας που δεν θα γίνεται invalidate σε 1 βδομάδα... εκτός και αν δεν έχεις θέμα storage οπότε πάω πάσο.
Αυτές τις μέρες θα το περάσω σε cloud server(κάτι που θα λύσει και ένα null file bug)και η χωρητικότητα δεν θα είναι πρόβλημα. Αλλά αν υπάρξει πρόβλημα στο μέλλον εννοείτε πως θα σκεφτώ αυτές τις λύσεις.

Άβαταρ μέλους
Jimaek
Δημοσιεύσεις: 608
Εγγραφή: 18 Ιαν 2010 22:54
Επικοινωνία:

Ιmage Optimization Web Service - Beta Testing

Δημοσίευση από Jimaek » 02 Φεβ 2012 12:29

1. Έγινε η μεταφορά σε Cloud Server
2. Μειώθηκε το first time load
3. Αντέχει πολύ μεγαλύτερο load

Αν βρείτε προβλήματα πείτε μου.
Σε όποιον είναι εύκολο βοηθήστε με να φτιάξω οδηγίες για την χρήση σε διάφορα CMS

Και ακόμα ψάχνω για όνομα για το service.

UPDATE
Επίσης έφτιαξα ένα pseudo-multitasking σύστημα.
Αντί στο πρώτο Load ο server να κατεβάζει την φώτο και μετά να εμφανίζει την optimized όσο ο χρήστης περιμένει, τώρα στο πρώτο load εμφανίζετε η αρχική μη optimized φώτο και στέλνετε signal να αρχίσει το download και optimization. Μόλις ο server την κατεβάσει και την επεξεργαστεί μόλις τότε αυτή η φώτο θα αρχίσει να εμφανίζεται στον client.

Άβαταρ μέλους
ThyClub
Honorary Member
Δημοσιεύσεις: 5312
Εγγραφή: 17 Νοέμ 2003 00:21
Τοποθεσία: Hell's Kitchen
Επικοινωνία:

Ιmage Optimization Web Service - Beta Testing

Δημοσίευση από ThyClub » 02 Φεβ 2012 13:32

Πολύ καλό. Να σε ρωτήσω μερικά πράγματα γιατί με ενδιαφέρει άμεσα.

1. Θα είναι free?
2. Σε περίπτωση που αντιμετωπίσει κάποιο πρόβλημα το script σου θα υπάρχει κάποιο fallback mechanism ώστε να μην εμφανίζουμε "dead" images στις σελίδες μας;

Αυτά. Περιμένω νέα σου



επιστρέφω στις σκιές...

TheELF
Δημοσιεύσεις: 13
Εγγραφή: 25 Ιαν 2012 17:20
Τοποθεσία: βαρδάρης Θεσσαλονίκη

Ιmage Optimization Web Service - Beta Testing

Δημοσίευση από TheELF » 02 Φεβ 2012 13:48

Μήπως είναι εντελώς άχρηστο;;
Με ένα ιρirfanview που έχει εξαιρετικά plugin για να κάνεις της εικόνες σου png με τρομερά μικρό μέγεθος,νομίζω θα είναι καλυμμένοι οι πάντες.

(Πω πω ,χαλάστρα... :) )

Άβαταρ μέλους
Jimaek
Δημοσιεύσεις: 608
Εγγραφή: 18 Ιαν 2010 22:54
Επικοινωνία:

Ιmage Optimization Web Service - Beta Testing

Δημοσίευση από Jimaek » 02 Φεβ 2012 14:08

ThyClub έγραψε:Πολύ καλό. Να σε ρωτήσω μερικά πράγματα γιατί με ενδιαφέρει άμεσα.

1. Θα είναι free?
2. Σε περίπτωση που αντιμετωπίσει κάποιο πρόβλημα το script σου θα υπάρχει κάποιο fallback mechanism ώστε να μην εμφανίζουμε "dead" images στις σελίδες μας;

Αυτά. Περιμένω νέα σου



επιστρέφω στις σκιές...
1. Ναι θα είναι free.
2. Αυτήν την στιγμή δουλεύω πάνω σε αυτό και το cname. Το Fallback θα είναι πολύ ποιο απλό όταν θα υπάρχει dashboard και DB με registered χρήστες. Μέχρι τότε θα σκεφτώ κάτι.
TheELF έγραψε:Μήπως είναι εντελώς άχρηστο;;
Με ένα ιρirfanview που έχει εξαιρετικά plugin για να κάνεις της εικόνες σου png με τρομερά μικρό μέγεθος,νομίζω θα είναι καλυμμένοι οι πάντες.

(Πω πω ,χαλάστρα... )
Χάνεις τελείως το νόημα,τον σκοπό και τον τρόπο λειτουργίας του service

gvre
Δημοσιεύσεις: 990
Εγγραφή: 14 Οκτ 2010 11:34
Τοποθεσία: Ηράκλειο Κρήτης
Επικοινωνία:

Ιmage Optimization Web Service - Beta Testing

Δημοσίευση από gvre » 02 Φεβ 2012 22:41

Jimaek έγραψε:Φτιάχνω ένα απλό web service το οποιο ενεργει ως CDN για εικονες.
Αυτό που κερδίζει ο χρήστης είναι η ταχύτητα και ή μειωμένη χρήση traffic.

Τι κάνει
-Optimization της εικόνας μειώνοντας το μέγεθος χωρίς επιπτώσεις στην ποιότητα
-Caching της εικόνας στον server για 30 μέρες
-Caching της εικόνας σε CDN
-Headers για γίνει σωστό caching της εικόνας από τον browser του χρήστη


Εγκατάσταση
Ας πούμε έχουμε την εικόνα
http://www.newsit.gr/files/Image/0Tech3 ... 27_355.jpg
έτσι θα είναι το link για την optimized εικόνα
http://www.newsit.gr.gocdn.eu/files/Ima ... 27_355.jpg

Δηλαδή απλός προσθέτουμε gocdn.eu στο τέλος του domain κάνοντας το newsit.gr subdomain.
Έκανα μια δοκιμή με τις εικόνες του παραδείγματος και δεν είδα σημαντική διαφορά στο μέγεθος (1.5ΚΒ). Γενικά, to jpeg επειδή είναι ήδη συμπιεσμένο δεν έχει πολλά περιθώρια επιπρόσθετης συμπίεσης χωρίς εμφανείς απώλειες. Επίσης, θεωρώ μειονέκτημα για ένα site να εξαρτάται από το cdn για να λειτουργεί σωστά.
Η δουλειά που έχει γίνει φαίνεται αρκετά καλή απλά δε νομίζω ότι μια τέτοια υπηρεσία έχει πραγματικό όφελος για τον ιδιοκτήτη κάποιου site (έχει μόνο τη μειωμένη χρήση traffic αλλά αυτό δεν είναι και τόσο ακριβό).

Απάντηση

Επιστροφή στο “PHP Προγραμματισμός”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 0 επισκέπτες