Δημιουργία Widget

Κώδικας, πληροφορίες, ερωτήσεις και απαντήσεις σχετικές με την JavaScript.

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

Απάντηση
Άβαταρ μέλους
philos
Δημοσιεύσεις: 264
Εγγραφή: 30 Αύγ 2007 23:32

Δημιουργία Widget

Δημοσίευση από philos » 27 Ιαν 2015 16:57

Θα ήθελα να φτιάξω ένα widget για κάποιες πληροφορίες της σελίδας μου.
Δηλαδή σε αυτό το section οι διαχειριστές άλλων σελίδων θα μπορούν να διαμορφώνουν ένα widget (στυλ, διαστάσεις κτλ) και το σύστημα θα επιστρέφει έναν html κώδικα έτοιμο προς τοποθέτηση σε άλλες σελίδες.

Επειδή μιλάμε για πληροφορίες πολλών τομέων του site (δλδ δεν πρόκειται για widget που εμφανίζει σε όλους ένα σύνολο δεδομένων, αλλά πολλά σύνολα), έχω καταλήξει ότι με κάποιο cron job θα αποθηκεύω στον server σε στατικά αρχεία (πχ html? xml? ) τα δεδομένα που θα έχει το widget κι από εκεί και ύστερα το σύστημα εξαγωγής του html κώδικα θα παίρνει αυτά τα δεδομένα και θα τα εμφανίζει σωστά.

Δηλαδή αντί το widget να είναι σε ένα iframe και να κάνει request σε κάποιο php file του server μου, τα ΔΕΔΟΜΕΝΑ θα είναι αποθηκευμένα - έτοιμα σε πολλά στατικά αρχεία που δε χρειάζονται php/mysql για να διαβαστούν.
Όταν ένα section ενημερώνεται, θα ενημερώνεται και το αντίστοιχο αρχείο.

Η ερώτησή μου είναι πως προτείνετε να αποθηκεύω τα δεδομένα;
Να τα βάλω πχ σε XML ή JSON;

Θα ήθελα ο χρήστης που διαμορφώνει ένα widget να μπορεί να επιλέξει πόσα στοιχεία-rows θα εμφανίζονται σε αυτό. Έτσι το xml/json θα έχει τον μέγιστο αριθμό δεδομένων-στοιχείων-rows και το widget θα εμφανίζει μόνο όσα επιλέγει ο χρήστης.

Το προσεγγίζω σωστά; Έχετε προτάσεις ή οδηγίες πάνω σε αυτό που θέλω να πετύχω; :)

Αν δεν έγινε κατανοητός κάπου, μπορείτε να με ρωτήσετε. :idea:

Άβαταρ μέλους
giannis17
Honorary Member
Δημοσιεύσεις: 1215
Εγγραφή: 06 Ιαν 2005 19:50
Τοποθεσία: Παγκράτι - Αθήνα
Επικοινωνία:

Δημιουργία Widget

Δημοσίευση από giannis17 » 27 Ιαν 2015 23:34

καλύτερα JSON, είναι η πιο native προσέγγιση εφόσον το widget θα τρέχει σε javascript.

Από εκεί και πέρα η λογική σου είναι σωστή απλά πληροφοριακά σε παρόμοια περίπτωση που δεν είχα πρόσβαση στην βάση με τα δεδομένα αλλά ήθελα να cachάρω τα δεδομένα έπαιζα με τα timestamps, αν το timestamp των δεδομένων δεν είχε αλλάξει (ή είναι μέσα σε ένα ορισμένο χρόνο ανάλογα αν το feed παίρνει κάθε φορά το timestamp του request ή αλλάζει όποτε αλλάζουν τα δεδομένα) φόρτωνα το τοπικό αρχείο αλλιώς ξανα-έστελνα το request και ενημέρωνα και το τοπικό αρχείο.
"There is only one problem with common sense; it’s not very common."
– Milt Bryce

Άβαταρ μέλους
philos
Δημοσιεύσεις: 264
Εγγραφή: 30 Αύγ 2007 23:32

Δημιουργία Widget

Δημοσίευση από philos » 28 Ιαν 2015 17:04

Ευχαριστώ για την απάντηση :)

Μπορείς να μου δώσεις περισσότερες πληροφορίες σχετικά με αυτό που είπες για τα timestamps;
Πως το πετυχαίνεις πάνω κάτω; Χρησιμοποιείς επίσης php request στο widget (έστω κι αν φορτώνεις cached δεδομένα) ;

Η ιδέα μου μέχρι στιγμής ήταν να έχω ένα column στον πίνακα της mysql με τις κατηγορίες. Όταν στη κατηγορία προστίθεται ένα στοιχείο, τότε το column (BOOL) παίρνει τιμή 1.
Ύστερα ένα cron job που τρέχει μια στο τόσο, ανανεώνει το cached αρχείο (πχ JSON) για τις κατηγορίες που εντόπισε 1 και στη συνέχεια μηδενίζει το column.
Οπότε αν δεν έχει ανανεωθεί κάποια κατηγορία, το cron job (ψευδο cron σε PHP είναι βασικά), όταν κάνει SELECT στη MySQL και δεν εντοπίζει τιμή 1 στον πίνακα, δεν ανανεώνει τπτ.

alou
Script Master
Δημοσιεύσεις: 1374
Εγγραφή: 24 Αύγ 2007 19:52
Επικοινωνία:

Δημιουργία Widget

Δημοσίευση από alou » 28 Ιαν 2015 18:34

Σωστό το boolean για το update στη συγκεκριμένη περίπτωση, αν και γενικά καλό είναι να υπάρχει και στο last modified column και στο json ένα timestamp value.

Το caching καταρχάς αφορά αυτούς που σερβίρεις το json (δεν σε νοιάζει εσένα) και σε βοηθάει σε interval requests όταν είσαι σίγουρος πως δεν αλλάζουν τα στοιχεία ή αλλάζουν σε συγκεκριμένα χρονικά διαστήματα, αν αλλάξουν άλλη στιγμή, για να το μάθεις θα πρέπει να πάρεις το response και να δεις header data -> last modified με κάποιο timestamp, που σημαίνει ότι ήδη έχεις κάνει request / response. Βέβαια έτσι ξέρεις αν χρειάζεσαι επιπλέον ενέργειες πχ αν θα τροποποιήσεις το DOM σου ή όχι - εξαρτάται τι θες να κάνεις, πιθανώς να μην έχει νόημα.

Μερικές ιδέες για caching πάντως μπορεις να δεις εδώ
http://stackoverflow.com/questions/1710 ... pt-browser

Για να καταλάβεις καλύτερα αυτό που είπα παραπάνω, το caching θα το χειριζόσουν στο beforeSend του ajax request ενώ το modified / not modified του json θα μπορούσες να το επιβεβαιώσεις μόνο στο success

Απάντηση

Επιστροφή στο “JavaScript και Frameworks”

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

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