Html στατικές και δυναμικές σελίδες αναλυτικά. Προσοχή. Προετοιμασία για εργασία

Δεν είναι υπέροχο να μπορείτε να δημιουργήσετε και να διατηρήσετε έναν ιστότοπο με τα χέρια σας, χωρίς να ζητήσετε βοήθεια από κάποιον; Εκτός από την εξοικονόμηση χρημάτων (εξάλλου, οι υπηρεσίες ανάπτυξης ιστού κοστίζουν πολύ), αυτό σας επιτρέπει να επιλύετε ανεξάρτητα πολλά προβλήματα: δημιουργία προσωπικής ιστοσελίδας, εταιρικής ιστοσελίδας, ηλεκτρονικού καταστήματος, υλοποίηση ενδιαφέροντων έργων - αυτό δεν είναι πλήρης λίστα με το τι μπορεί να κάνει ένα άτομο κατέχοντας τεχνολογίες ανάπτυξης ιστού.

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

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

Βιβλίο:

Η έννοια της στατικής και δυναμικής ιστοσελίδας

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

Το όνομα μιας στατικής σελίδας μιλάει από μόνο του: σε μια τέτοια σελίδα παρουσιάζονται στατικές, σταθερές και αμετάβλητες πληροφορίες. Μάλλον, μπορείτε να το αλλάξετε, αλλά για αυτό πρέπει να κάνετε τις κατάλληλες προσαρμογές στον κώδικα προγράμματος της σελίδας.

Συνήθως, ένα αρχείο στατικής σελίδας είναι σε μορφή HTML. Ένας προγραμματιστής ιστού γράφει κώδικα HTML για να σχηματίσει το περιεχόμενο του ιστότοπου, εκχωρεί ένα όνομα στο αρχείο και, στη συνέχεια, ανεβάζει τη σελίδα στον διακομιστή ιστού και την καθιστά διαθέσιμη στους χρήστες του Διαδικτύου. Για παράδειγμα, σε έναν εταιρικό ιστότοπο, μια στατική σελίδα μπορεί να περιέχει πληροφορίες για το ιστορικό της εταιρείας, τις κύριες κατευθύνσεις των δραστηριοτήτων της κ.λπ. Σημειώστε ότι θα πρέπει να ξεκινήσετε τις πρώτες σας εμπειρίες στον τομέα της ανάπτυξης ιστοσελίδων με τη δημιουργία στατικού ιστού σελίδες. Θα μιλήσουμε περισσότερα για αυτό στο κεφάλαιο για τις Βασικές αρχές προγραμματισμού Ιστού με HTML.

ΣΗΜΕΙΩΣΗ

Η διεύθυνση μιας σελίδας γραμμένης σε γλώσσα HTML θα τελειώνει με τους χαρακτήρες που ακολουθούν μια τελεία.

Η θεμελιώδης διαφορά μεταξύ μιας δυναμικής ιστοσελίδας και μιας στατικής είναι ότι το περιεχόμενό της δεν είναι μόνιμο, αλλά μπορεί να αλλάξει. Δημιουργείται ανάλογα με τις επιθυμίες του χρήστη, ή μάλλον, με βάση αιτήματα που δημιουργούνται από τους επισκέπτες και αποστέλλονται στον διακομιστή ιστού. Όπως σημειώσαμε προηγουμένως, το πιο χαρακτηριστικό παράδειγμα μιας δυναμικής ιστοσελίδας είναι μια σελίδα με αποτελέσματα αναζήτησης που επιστρέφονται από μια μηχανή αναζήτησης (π.χ. www.google.ru) με βάση ένα ερώτημα αναζήτησης που αποστέλλεται από έναν χρήστη. Ένα άλλο χαρακτηριστικό παράδειγμα χρήσης ιστοσελίδων είναι τα ηλεκτρονικά καταστήματα: ένας επισκέπτης, χρησιμοποιώντας τις επιλογές, υποδεικνύει ποιο προϊόν και με ποιες ιδιότητες τον ενδιαφέρει, στέλνει αίτημα (αυτό γίνεται συνήθως με το αντίστοιχο κουμπί - κ.λπ.) και μετά μερικά δευτερόλεπτα λαμβάνει στην οθόνη μια λίστα προϊόντων που πληρούν τα καθορισμένα κριτήρια. Επιπλέον, οι δυναμικές σελίδες χρησιμοποιούνται ευρέως σε άλλους ιστότοπους για μια μεγάλη ποικιλία σκοπών και κατευθύνσεων.

Οι δυναμικές σελίδες μπορούν επίσης να δημιουργηθούν χρησιμοποιώντας τη γλώσσα HTML, αλλά μια άλλη γλώσσα, η PHP, είναι πιο κατάλληλη για αυτό (κυρίως λόγω της ευρύτερης λειτουργικότητάς της). Αντίστοιχα, η μορφή αρχείου σελίδας δεν θα είναι πλέον HTML, αλλά PHP και η διεύθυνσή της στο Διαδίκτυο θα τελειώνει με τους χαρακτήρες μετά από μια τελεία.

Συνεχίζουμε τον κύκλο των δημοσιεύσεων για στατικούς ιστότοπους βάσει του αποθηκευτικού μας χώρου στο cloud (βλ. προηγούμενες δημοσιεύσεις και). Σήμερα θα συζητήσουμε αναλυτικά τα ζητήματα της λεπτής ρύθμισης και βελτιστοποίησής τους.

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

Έχουμε ήδη γράψει σχετικά με τη σύνδεση στον αποθηκευτικό μας χώρο CDN cloud από την Akamai. Το CDN αποθηκεύει όλο το στατικό περιεχόμενο (εικόνες, αρχεία κειμένου, JS, CSS κ.λπ.) σε διακομιστές προσωρινής αποθήκευσης που είναι διάσπαρτοι σε όλο τον κόσμο (βλ. χάρτη).

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

Από προεπιλογή, όλα τα δεδομένα αποθηκεύονται προσωρινά στο CDN για 24 ώρες. Πρόσφατα, προστέθηκε μια νέα δυνατότητα στο αποθετήριο, με την οποία μπορείτε να διαγράψετε την προσωρινή μνήμη CDN ανά πάσα στιγμή:

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

Οποιαδήποτε ιστοσελίδα περιέχει πολλά διαφορετικά στοιχεία: εικόνες, σενάρια, αρχεία στυλ και ούτω καθεξής. Ο χρήστης που επισκέπτεται τη σελίδα για πρώτη φορά λαμβάνει όλα αυτά τα στοιχεία κάνοντας μια σειρά από αιτήματα HTTP. Για να αποφευχθεί η εκ νέου μεταφόρτωση μεγάλου αριθμού αρχείων, χρησιμοποιείται προσωρινή αποθήκευση.

Το μοντέλο προσωρινής αποθήκευσης που χρησιμοποιείται στο πρωτόκολλο HTTP βασίζεται στους λεγόμενους επικυρωτές - ειδικές κεφαλίδες που χρησιμοποιούνται από τον πελάτη για να διασφαλιστεί ότι το αποθηκευμένο έγγραφο είναι ακόμα ενημερωμένο. Χάρη στους επικυρωτές, ο πελάτης μπορεί να ελέγξει την κατάσταση του εγγράφου χωρίς να στείλει ολόκληρο το αποθηκευμένο αντίγραφο στον διακομιστή. Με τη σειρά του, ο διακομιστής στέλνει ένα έγγραφο στην απάντησή του μόνο εάν ο επικυρωτής που λαμβάνει υποδεικνύει την παρουσία ενός ξεπερασμένου αντιγράφου στη μνήμη cache του πελάτη.

Οι επικυρωτές κατηγοριοποιούνται σε δυνατά και αδύναμα σημεία. Ισχυροί επικυρωτές εισήχθησαν στο HTTP / 1.1. Ονομάζονται έτσι επειδή αλλάζουν κάθε φορά που αλλάζει το αρχείο. Αυτά περιλαμβάνουν τα λεγόμενα ETags (entity tags). Το ETag είναι ένα αναγνωριστικό για το περιεχόμενο ενός εγγράφου. αλλάζει εάν αλλάξει τουλάχιστον ένα bit στο έγγραφο. Το αναγνωριστικό μπορεί να χρησιμοποιηθεί, για παράδειγμα, το άθροισμα MD5 του περιεχομένου του εγγράφου. Όταν ένας πελάτης ζητά ένα έγγραφο από τον διακομιστή, η τιμή ETag μεταδίδεται στην απόκριση, για παράδειγμα:

HTTP / 1.1 200 OK Διακομιστής: Selectel_Storage / 1.0 Accept-Ranges: bytes Τελευταία τροποποίηση: Δευτ., 18 Αυγούστου 2014 12:25:38 GMT X-Timestamp: 1408364738.80296 1408364738.80296 Περιεχόμενο: Περιεχόμενο 7Περιεχόμενο /4 Πέγ. -Allow-Origin: * Access-Control-Expose-Headers: Last-Modified, ETag, X-Timestamp ETag: "ebef3343a7b152ea7302eef75bea46c3" Ημερομηνία: Τετ, 20 Αυγ 2014 18:52 GMT:
Όταν ζητηθεί ξανά το ίδιο έγγραφο, η αποθηκευμένη τιμή επικύρωσης μεταβιβάζεται στην κεφαλίδα If-None-Match:

GET / HTTP / 1.1 Κεντρικός υπολογιστής: example.org If-None-Match: "ebef3343a7b152ea7302eef75bea46c3"
Εάν το έγγραφο δεν έχει αλλάξει, τότε ο διακομιστής θα επιστρέψει μόνο κεφαλίδες και 304 Μη τροποποιημένο κώδικα στην απόκριση. Διαφορετικά, ο διακομιστής θα επιστρέψει έναν κωδικό 200 και θα μεταφέρει τη νέα έκδοση του εγγράφου, καθώς και τη νέα τιμή ETag για αυτό.

Στο αποθετήριο μας και το ETag δημιουργείται αμέσως μετά τη μεταφόρτωση του αρχείου. Είναι ένας κατακερματισμός MD5 του περιεχομένου. Εάν αλλάξει το περιεχόμενο, τότε αλλάζει και το ETag.

Οι αδύναμοι επικυρωτές είναι επικυρωτές που δεν αλλάζουν απαραίτητα κάθε φορά που αλλάζει ένα αρχείο.

Ένα παράδειγμα αδύναμου εργαλείου επικύρωσης είναι η κεφαλίδα Last-Modified. Η τιμή αυτής της κεφαλίδας είναι η ημερομηνία τελευταίας τροποποίησης του αρχείου. Εγκαθίσταται αυτόματα στο αποθετήριο μας. Εάν καθορίσετε κατόπιν αιτήματος στην κεφαλίδα If-Modified-Since μια ημερομηνία όχι προγενέστερη από αυτή που περιέχεται επί του παρόντος στην κεφαλίδα Last-Modified, τότε η απάντηση θα είναι επίσης 304 Not Modified.

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

Για παράδειγμα, και οι δύο τύποι επικυρωτών μπορούν να χρησιμοποιηθούν σε αιτήματα GET υπό όρους (Εάν Τροποποιήθηκε Από ή Αν Δεν Ταιριάζουν). Ωστόσο, κατά τη μεταφόρτωση αρχείων σε μέρη, μπορούν να χρησιμοποιηθούν μόνο ισχυροί επικυρωτές - διαφορετικά ο πελάτης θα λάβει το αρχείο σε ασυνεπή μορφή.

Η κεφαλίδα Cache-Control με την οδηγία max-age χρησιμοποιείται για τον ορισμό της ηλικίας στην προσωρινή μνήμη του προγράμματος περιήγησης για ένα αντίγραφο ενός αρχείου του οποίου το πρωτότυπο βρίσκεται σε αποθήκευση. Χάρη σε αυτήν την κεφαλίδα, μπορείτε να αυξήσετε σημαντικά την ταχύτητα φόρτωσης του ιστότοπου - εάν το αρχείο αποθηκευτεί προσωρινά, το πρόγραμμα περιήγησης θα εμφανίσει αμέσως το περιεχόμενο από τη μνήμη cache χωρίς να υποβάλει ούτε ένα αίτημα στον ιστότοπο.
Ο χρόνος αποθήκευσης του αρχείου στην κρυφή μνήμη υποδεικνύεται σε δευτερόλεπτα:

Cache-Control: max-age = 7200
Στο παράδειγμα που φαίνεται, είναι 7200 δευτερόλεπτα (2 ώρες). Συνήθως τα αρχεία CSS, JS και εικόνας αποθηκεύονται στην κρυφή μνήμη με αυτόν τον τρόπο. Είναι επιθυμητό να αποθηκεύονται για πάντα στην κρυφή μνήμη και να αλλάζετε τους συνδέσμους σε HTML όταν αλλάζει το περιεχόμενο. Το RFC 2616 συνιστά χρόνο αποθήκευσης στην κρυφή μνήμη για τέτοια αρχεία που δεν υπερβαίνει το 1 έτος:

Cache-Control: max-age = 31536000
Εάν θέλετε ένα συγκεκριμένο αρχείο να μην αποθηκεύεται προσωρινά, αλλά να εμφανίζεται πάντα "φρέσκο", η κεφαλίδα Cache-Control ορίζεται στην ακόλουθη τιμή:

Cache-Control: χωρίς προσωρινή μνήμη
Καθορίζει ότι το στοιχείο δεν πρέπει να αποθηκευτεί καθόλου στην κρυφή μνήμη και ότι ο πελάτης θα πρέπει να το ζητά κάθε φορά που γίνεται πρόσβαση στο αποθετήριο (ο χρόνος λήψης του αρχείου θα αυξηθεί σε αυτήν την περίπτωση, καθώς θα πρέπει να γίνει λήψη του σώματος του αρχείου).

Ένας άλλος τρόπος με τον οποίο μπορείτε πάντα να ενημερώνετε το αρχείο είναι να προσθέσετε ένα άθροισμα ελέγχου περιεχομένου στο όνομα του αρχείου.

Εάν το περιεχόμενο του αρχείου αλλάξει κατά τουλάχιστον ένα bit, τότε θα αλλάξει και το άθροισμα ελέγχου. Εάν δεν υπήρχαν αλλαγές, τότε το πρόγραμμα περιήγησης χρησιμοποιεί το αρχείο από τη μνήμη cache. Όταν αλλάζετε το αρχείο, αλλάζει ο σύνδεσμος προς αυτό και φορτώνεται η νέα έκδοση.

Μπορείτε να λάβετε το άθροισμα ελέγχου τόσο χρησιμοποιώντας τα τυπικά βοηθητικά προγράμματα md5sum ή sha1sum όσο και χρησιμοποιώντας ειδικά βοηθητικά προγράμματα.

Μπορείτε επίσης να προσθέσετε ένα αυθαίρετο σύνολο χαρακτήρων σε συνδέσμους σε αρχεία - για παράδειγμα, μια χρονική σήμανση (http://example.com/script.js?timestamp_here) - και να ενημερώνετε τους συνδέσμους κάθε φορά που αναπτύσσεται ο ιστότοπος. Κατά τη χρήση αυτής της μεθόδου, ωστόσο, δεν υπάρχει καμία εγγύηση ότι το πρόγραμμα περιήγησης δεν θα κάνει περιττές αιτήσεις: ακόμη και σε αρχεία των οποίων το περιεχόμενο δεν έχει αλλάξει, θα οδηγεί ένας άλλος σύνδεσμος (το κλειδί προσωρινής αποθήκευσης είναι ολόκληρος ο σύνδεσμος, μαζί με τις παραμέτρους ερωτήματος) και εσείς θα πρέπει να τα κατεβάσετε ξανά.

Για σελίδες HTML, είναι προτιμότερο να ορίσετε την κεφαλίδα Cache-Control σε no-cache. Εάν κάτι πρέπει επειγόντως να αλλάξει στη σελίδα και ο πελάτης έχει αυτή τη σελίδα ήδη αποθηκευμένη στην προσωρινή μνήμη (τα σύγχρονα προγράμματα περιήγησης το κάνουν αυτό από προεπιλογή), τότε ο πελάτης ενδέχεται να μην δει καθόλου τις αλλαγές.

Αυτό είναι ιδιαίτερα σημαντικό όταν χρησιμοποιείτε CDN: Το CDN του Akamai θα αποθηκεύει προσωρινά αρχεία χωρίς αντίστοιχες κεφαλίδες για 24 ώρες από προεπιλογή. Μπορείτε, φυσικά, να διαγράψετε την προσωρινή μνήμη (δείτε παραπάνω), αλλά πρέπει να περιμένετε τουλάχιστον 15 λεπτά μετά την αποστολή του αντίστοιχου αιτήματος. Η ρύθμιση της τιμής χωρίς προσωρινή μνήμη θα βοηθήσει στην αποφυγή πιθανών προβλημάτων - η σελίδα θα φορτώνεται πάντα ενημερωμένη. Τα προγράμματα περιήγησης σε αυτήν την περίπτωση θα εξακολουθούν να χρησιμοποιούν κεφαλίδες If-None-Match (ή If-Modified-Since) και μια σελίδα που δεν έχει τροποποιηθεί δεν θα φορτωθεί ξανά.

Σε ορισμένες περιπτώσεις, είναι καλύτερο να καθορίσετε τον χρόνο αποθήκευσης στην κρυφή μνήμη για σελίδες HTML με βάση τη συχνότητα των αλλαγών. Για παράδειγμα, εάν η σελίδα με ειδήσεις στον ιστότοπο ενημερώνεται κάθε ώρα, τότε η μέγιστη ηλικία μπορεί να οριστεί σε 3600 (1 ώρα).

Η τιμή της κεφαλίδας Cache-Control (καθώς και άλλων κεφαλίδων HTTP) στο κατάστημά μας μπορεί να οριστεί μέσω της διεπαφής ιστού:

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

Η κεφαλίδα Expires μπορεί να χρησιμοποιηθεί αντί για Cache-Control. Η τιμή του υποδεικνύει την ημερομηνία σε μορφή ημερομηνίας RFC 1123, μετά την οποία το αρχείο δεν είναι πλέον έγκυρο (για παράδειγμα: Τρίτη, 31 Ιανουαρίου 2012 15:02:53 GMT). Μέχρι αυτή την ημερομηνία, το πρόγραμμα περιήγησης δεν θα υποβάλλει αιτήματα στον ιστότοπο, αλλά θα λαμβάνει το αρχείο από την προσωρινή μνήμη. Μετά από αυτήν την ημερομηνία, το αρχείο θα ληφθεί ξανά.

Με τη βοήθεια της συμπίεσης, μπορείτε να επιταχύνετε σημαντικά τη φόρτωση του ιστότοπου. Από το HTTP / 1.1, οι πελάτες αναφέρουν υποστηριζόμενες μεθόδους συμπίεσης στην κεφαλίδα Accept-Encoding:

Αποδοχή-Κωδικοποίηση: gzip, deflate
Στην απόκριση διακομιστή, πληροφορίες σχετικά με τη μέθοδο συμπίεσης που χρησιμοποιείται μεταδίδονται στην κεφαλίδα Content-Encoding:

Περιεχόμενο-Κωδικοποίηση: gzip
Μία από τις πιο δημοφιλείς και πιο συχνά χρησιμοποιούμενες μεθόδους σήμερα είναι φυσικά το gzip. Με τη βοήθειά του, μπορείτε να μειώσετε σημαντικά τον χρόνο λήψης. Το Gzip λειτουργεί ιδιαίτερα καλά με αρχεία κειμένου: HTML, CSS, JS. Χάρη στη συμπίεση, το μέγεθος των αρχείων κειμένου (και, κατά συνέπεια, ο όγκος της μεταδιδόμενης κίνησης) μειώνεται κατά μέσο όρο 5-10 φορές. Αυτό μπορεί να αυξήσει σημαντικά την ταχύτητα φόρτωσης της σελίδας, κάτι που είναι ιδιαίτερα σημαντικό για πελάτες κινητών με αργές συνδέσεις.

Δεν έχει νόημα να χρησιμοποιείτε το gzip για αρχεία γραφικών: η συμπίεση δεν βοηθά στη σημαντική μείωση του μεγέθους τους και συχνά το αυξάνει.

Το Akamai CDN χρησιμοποιεί το gzip για τα περισσότερα αρχεία κειμένου από προεπιλογή.

Ελαχιστοποίηση σημαίνει αφαίρεση περιττών / προαιρετικών χαρακτήρων από ένα αρχείο προκειμένου να μειωθεί το μέγεθός του και να μειωθεί ο χρόνος λήψης. Λόγω αυτού, το μέγεθος του αρχείου μειώνεται κατά μέσο όρο 1,5-3 φορές. Σήμερα, η πρακτική της ελαχιστοποίησης όχι μόνο των JS και CSS, αλλά και άλλων τύπων αρχείων (HTML, αρχεία γραφικών κ.λπ.) γίνεται ευρέως διαδεδομένη.

Για την ελαχιστοποίηση, χρησιμοποιούνται ειδικά εργαλεία, ιδίως:

Με τη βοήθεια της ελαχιστοποίησης, μπορείτε όχι μόνο να αφαιρέσετε ασήμαντα κενά και αλλαγές γραμμής (είναι προαιρετικά σε CSS και JS), αλλά και να εκτελέσετε πιο περίπλοκες λειτουργίες. Για παράδειγμα, στο JS μια συνάρτηση όπως αυτή:

Άθροισμα συνάρτησης (first_param, second_param) (return (first_param + second_param);)
Μπορείτε να το μετατρέψετε σε συνάρτηση s (a, b) (return (a + b)) και στη συνέχεια να χρησιμοποιήσετε το s αντί για άθροισμα παντού στον κώδικα, διατηρώντας παράλληλα πλήρως τη λογική της δουλειάς του. Μπορείτε να δείτε πώς λειτουργεί η διαδικασία ελαχιστοποίησης JavaScript στη διεύθυνση http://lisperator.net/uglifyjs/ στην ενότητα Άνοιγμα επίδειξης.

Τα σύγχρονα προγράμματα περιήγησης κάνουν κατά μέσο όρο 6 ταυτόχρονα αιτήματα ανά τομέα. Εάν ο ιστότοπός σας περιέχει πολλά μικρά αρχεία, μπορεί να χρειαστεί πολύς χρόνος για να φορτώσει - αυτό είναι ιδιαίτερα αισθητό σε αργές ή ασταθείς συνδέσεις.

Εδώ μπορεί να βοηθήσει η συνένωση - ο συνδυασμός πολλών αρχείων του ίδιου τύπου (όπως JS ή CSS) σε ένα. Σας επιτρέπει να μειώσετε τον αριθμό των αιτημάτων και έτσι να αυξήσετε την ταχύτητα φόρτωσης σελίδων.

Η συνένωση μπορεί επίσης να χρησιμοποιηθεί για την επιτάχυνση της φόρτωσης της εικόνας. Μπορεί να γίνει με δύο τρόπους: με την ενσωμάτωση δεδομένων σε URL και με τη χρήση sprites.

Η ένεση δεδομένων πραγματοποιείται χρησιμοποιώντας έναν ειδικό τύπο URL - δεδομένων: URI. Το URI (Universal Resource Identifator) μπορεί να χρησιμοποιηθεί τόσο στο χαρακτηριστικό src της ετικέτας img όσο και στη διεύθυνση URL της εικόνας φόντου στο CSS.

Υπάρχουν διαδικτυακά εργαλεία για τη μετατροπή εικόνων σε δεδομένα: URI (βλ., για παράδειγμα, και).

Το sprite είναι μια συλλογή εικόνων που συνδυάζονται σε μια εικόνα. Διάφορα εργαλεία λογισμικού χρησιμοποιούνται για τη δημιουργία τοποθεσιών. Χρησιμοποιώντας CSS, μπορείτε να ανατρέξετε στην απαιτούμενη ενότητα μιας μεγάλης εικόνας και να την τοποθετήσετε στη σωστή θέση στον ιστότοπο.

Τα Sprites μπορούν να βοηθήσουν στην αύξηση της ταχύτητας φόρτωσης, αλλά πρέπει να σημειωθεί ότι είναι συχνά δύσκολο να εργαστείτε μαζί τους. Για να κάνετε έστω και μια μικρή αλλαγή στο sprite, θα χρειαστεί να κάνετε συνοδευτικές αλλαγές στο CSS.

Σε σύγχρονα εργαλεία για την κατασκευή έργων JS (

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

Σε αυτό το άρθρο, θα σας καθοδηγήσουμε στα βήματα δημιουργίας ενός μηχανισμού δημοσίευσης ιστότοπου δελτίου τύπου. Ο ιστότοπός μας θα συνδέει επί τόπου δελτία τύπου που είναι αποθηκευμένα σε μια βάση δεδομένων με ιστοσελίδες με πρότυπα. Δεν είναι πρόθεσή μας να εισαγάγουμε τους αναγνώστες στα βασικά των εργαλείων ανάπτυξης ιστοσελίδων, καθώς υπάρχουν πολλά βιβλία και άρθρα που έχουν γραφτεί σχετικά. Αυτό το άρθρο προορίζεται κυρίως για εκείνους τους χρήστες που έχουν ήδη εμπειρία στη δημιουργία ιστοσελίδων και απλών τοποθεσιών. Ο κύριος στόχος μας είναι να σας δείξουμε πώς να ξεκινήσετε την ανάπτυξη της πρώτης σας δυναμικής τοποθεσίας Web. Για να κατανοήσετε το άρθρο, είναι επιθυμητό να έχετε βασικές γνώσεις για τις αρχιτεκτονικές συστημάτων πληροφοριών, τη γλώσσα σήμανσης υπερκειμένου (HTML) και τη γλώσσα προγραμματισμού Perl. Θα χρησιμοποιήσουμε τρεις ισχυρές τεχνολογίες ανοιχτού κώδικα για να δημιουργήσουμε αυτόν τον ιστότοπο: Apache, MySQL και Perl / DBI.

Τι είναι ένας Στατικός Ιστότοπος;

Πριν ξεκινήσετε τη δυναμική ανάπτυξη ιστοτόπων, είναι σημαντικό να κατανοήσετε τι είναι ένας στατικός ιστότοπος και οι στατικές ιστοσελίδες που τον αποτελούν. Οι στατικές ιστοσελίδες δημιουργούνται με μη αυτόματο τρόπο, στη συνέχεια αποθηκεύονται και αποστέλλονται στον ιστότοπο. Κάθε φορά που χρειάζεται να αλλάξει το περιεχόμενο μιας τέτοιας σελίδας, ο χρήστης το τροποποιεί στον υπολογιστή εργασίας του, συνήθως χρησιμοποιώντας ένα πρόγραμμα επεξεργασίας HTML, το αποθηκεύει και στη συνέχεια το ανεβάζει ξανά στον ιστότοπο. Εάν κοιτάξετε προσεκτικά μια πύλη όπως το CNN.com ή το BBC.co.uk, ίσως σκεφτείτε ότι αυτές οι εταιρείες προσλαμβάνουν έναν στρατό σχεδιαστών διάταξης για να ενημερώσουν το περιεχόμενο των τοποθεσιών τους. Στην πραγματικότητα, υπάρχει καλύτερος τρόπος - χρησιμοποιώντας την έννοια του δυναμικού ιστότοπου.

Τι είναι ένας δυναμικός ιστότοπος;

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

Κατασκευή δυναμικής ιστοσελίδας

Το πρώτο πράγμα που χρειάζεστε για να δημιουργήσετε μια δυναμική τοποθεσία είναι ένας διακομιστής Web όπως ο Apache.

Ο διακομιστής Ιστού μπορεί να χρησιμοποιηθεί για την εξυπηρέτηση ενός ιστότοπου ηλεκτρονικού εμπορίου, ενός διακομιστή ειδήσεων, μιας μηχανής αναζήτησης, ενός συστήματος εξ αποστάσεως εκπαίδευσης και ακόμη και σε όλους αυτούς τους τομείς. Η επιλογή ενός διακομιστή Ιστού εξαρτάται από το είδος της δραστηριότητας που το άτομο ή ο οργανισμός σκοπεύει να κάνει στο Διαδίκτυο.

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

Οι μεγάλες εταιρείες βασίζονταν μέχρι πρόσφατα στον Microsoft Internet Information Server, το Netscape FastTrack, το IBM WebSphere και το Apache χρησιμοποιούνταν κυρίως από μικρές εταιρείες. Ωστόσο, τώρα η κατάσταση έχει αλλάξει κάπως και ο Apache αρχίζει να υποστηρίζει την απόδοση ορισμένων μεγάλων έργων στο Διαδίκτυο, ιδίως του Yahoo.

Μπορείτε να βρείτε την πλήρη έκδοση του άρθρου στο CD-ROM μας.

Το Apache παρέχει πληθώρα επιλογών για την προσαρμογή του διακομιστή Ιστού σας για να ανταποκρίνεται στις ανάγκες των ατόμων και των επιχειρήσεων. Η ρύθμιση γίνεται χρησιμοποιώντας τις οδηγίες που περιέχονται στα αρχεία διαμόρφωσης. Ο Apache σάς επιτρέπει να δημιουργείτε εικονικές τοποθεσίες Web και λειτουργεί επίσης ως διακομιστής μεσολάβησης. Εάν θέλετε να παρέχετε πρόσβαση στο περιεχόμενο του διακομιστή μόνο σε περιορισμένο αριθμό ατόμων, ο διακομιστής Web μπορεί να ρυθμιστεί έτσι ώστε κατά την πρόσβαση στους καθορισμένους καταλόγους, ο διακομιστής ελέγχει τα ονόματα σύνδεσης και τους κωδικούς πρόσβασης στη δική του ή σε μία από τις βάσεις δεδομένων συνδεδεμένο με αυτό.

Στη συνέχεια, πρέπει να αποφασίσετε πώς θα αποθηκεύσετε το περιεχόμενο (περιεχόμενο) που εμφανίζεται στην ιστοσελίδα. Σε αυτό το άρθρο, χρησιμοποιώντας ένα συγκεκριμένο παράδειγμα, θα δείξουμε πώς να δημιουργήσουμε μια βάση δεδομένων στο MySQL DBMS, η οποία θα μας επιτρέψει να χωρίσουμε το περιεχόμενο Ιστού σε πίνακες που περιέχουν πεδία και εγγραφές με δεδομένα. Ένα πεδίο είναι μια διακριτή μονάδα δεδομένων σε έναν πίνακα. Για παράδειγμα, μπορούμε να δημιουργήσουμε έναν πίνακα tbl_news_items με πεδία col_title, col_date, col_fullstory, col_author. Η MySQL είναι μια εξαιρετική επιλογή για τη δημιουργία μιας τέτοιας βάσης δεδομένων λόγω της ευκολίας χρήσης και διαχείρισης, της δωρεάν διανομής για διαφορετικές πλατφόρμες, συμπεριλαμβανομένων των Linux και Windows, και της ταχέως αυξανόμενης δημοτικότητάς της.

Μετά από αυτό, θα δημιουργήσουμε δυναμικές σελίδες προτύπου HTML. Για να αναπτύξουμε εφαρμογές για αλληλεπίδραση με τη βάση δεδομένων και τα πρότυπα, θα χρησιμοποιήσουμε τη γλώσσα Perl.

Στην πραγματικότητα, πρέπει να δημιουργήσουμε τρία προγράμματα ή σενάρια Perl: το ένα θα εμφανίζει συνδέσμους προς όλα τα διαθέσιμα δελτία τύπου (pr-list-dbi.pl), το άλλο - το περιεχόμενο του επιλεγμένου δελτίου τύπου (pr-content-dbi. pl) και το τρίτο θα μας επιτρέψει να προσθέσουμε ένα νέο δελτίο τύπου στη βάση δεδομένων (pr-add-dbi.pl). Η εργασία διάταξης μπορεί να ανατεθεί στον αγαπημένο σας επεξεργαστή HTML, για παράδειγμα, το Allaire HomeSite (http://www.allaire.com/). Απλώς να θυμάστε ότι κατά τη δημιουργία ενός προτύπου, πρέπει να αφήσετε κενές περιοχές στις οποίες θα εισαχθεί δυναμική γέμιση (φυσικά, μεταβλητού μήκους).

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

Το τελευταίο πράγμα που πρέπει να κάνετε είναι να ανεβάσετε τα πρότυπά σας στον διακομιστή ιστού σε συγκεκριμένους καταλόγους. Μπορείτε να χρησιμοποιήσετε τον πελάτη FTP CuteFTP (http://www.cuteftp.com/), αλλά προτιμάμε να χρησιμοποιούμε το περιτύλιγμα αρχείων FAR. Δύο σημαντικά πράγματα που πρέπει να θυμάστε: πρώτον, τα αρχεία προτύπων πρέπει να περιέχουν ονόματα που τελειώνουν σε .pl και δεύτερον, πρέπει να είναι εκτελέσιμα (σε συστήματα UNIX, chmod 0755 template_name.pl). Είναι όλα!

Προσθήκη λειτουργικότητας

Δεν είναι δύσκολο να προστεθεί λειτουργικότητα στον μηχανισμό δημοσίευσης δελτίων τύπου. Μπορείτε να ταξινομήσετε τους συνδέσμους προς τα δελτία τύπου που είναι διαθέσιμα στη βάση δεδομένων κατά ημερομηνία ή τίτλο, ομαδοποιώντας τα ανά έτος. Ή, για παράδειγμα, μπορεί να θέλετε να εμφανίζετε περιστασιακά ένα δελτίο τύπου στην ιστοσελίδα σας, παρέχοντας κατά καιρούς πληροφορίες στους επισκέπτες ανεξάρτητα από το πότε δημοσιεύτηκε πραγματικά. Αλλά πιθανότατα η πιο σημαντική και χρήσιμη λειτουργία θα είναι η προσθήκη μιας φόρμας HTML για την εισαγωγή του περιεχομένου του δελτίου τύπου και η ανάπτυξη ενός προγράμματος CGI στην Perl προκειμένου να επεξεργαστεί αυτή τη φόρμα και στη συνέχεια να δημοσιεύσει το έγγραφο στη βάση δεδομένων. Θυμηθείτε ότι το CGI (Common Gateway Interface) είναι ένα πρωτόκολλο, μηχανισμός ή επίσημη συμφωνία μεταξύ ενός διακομιστή Web και ενός μεμονωμένου προγράμματος. Ο διακομιστής κωδικοποιεί δεδομένα εισόδου, όπως φόρμες HTML, και το πρόγραμμα CGI τα αποκωδικοποιεί και δημιουργεί μια ροή εξόδου. Η προδιαγραφή πρωτοκόλλου δεν λέει τίποτα για κάποια συγκεκριμένη γλώσσα προγραμματισμού. Επομένως, τα προγράμματα που συμμορφώνονται με αυτό το πρωτόκολλο μπορούν να γραφτούν σε σχεδόν οποιαδήποτε γλώσσα - σε C, C ++, Visual Basic, Delphi, Tcl, Python ή, όπως στην περίπτωσή μας, σε Perl.

Ας συνοψίσουμε μερικά από τα αποτελέσματα. Ας ελπίσουμε ότι αυτό το άρθρο θα σας βοηθήσει να κατανοήσετε τα πλεονεκτήματα της έννοιας των δυναμικών ιστοσελίδων έναντι των στατικών. Η εφαρμογή αυτής της ιδέας θα μειώσει τη χειρωνακτική εργασία, θα βοηθήσει στη διανομή του φόρτου εργασίας του διακομιστή και θα προσθέσει γρήγορα περιεχόμενο στον ιστότοπό σας. Ο συνδυασμός των Apache, MySQL και Perl θα παρέχει ένα σχεδόν δωρεάν, εύκολο στη χρήση, ευέλικτο στην εγκατάσταση και ρύθμιση παραμέτρων πολλαπλών πλατφορμών και επεκτάσιμο περιβάλλον ανάπτυξης. Εδώ δεν θα εξετάσουμε τα χαρακτηριστικά της εγκατάστασής τους, καθώς, πρώτον, απλά δεν υπάρχει αρκετός χώρος για αυτό το άρθρο και, δεύτερον, καθένα από αυτά τα εργαλεία συνοδεύεται από πολύ λεπτομερή τεκμηρίωση.

Δημιουργία βάσης δεδομένων στο MySQL DBMS

Ανάπτυξη Μοντέλου Βάσης Δεδομένων

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

Βήμα 1

Πρέπει να ονομάσουμε κάπως τη βάση δεδομένων. Ας το ονομάσουμε db_website.

Βήμα 2

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

Βήμα 3

Είναι απαραίτητο να ορίσουμε τα πεδία που θα περιέχει ο πίνακάς μας. Αυτά τα πεδία θα αντιπροσωπεύουν όλα τα στοιχεία του δελτίου τύπου. Το παράδειγμά μας χρησιμοποιεί πέντε πεδία: col_id (αριθμητικό αναγνωριστικό του δελτίου τύπου), col_title (τίτλος), col_date (ημερομηνία δημοσίευσης), col_fullstory (περιεχόμενο), col_author (όνομα συγγραφέα). Το πεδίο col_id θα περιέχει ένα μοναδικό αναγνωριστικό με το οποίο ο χρήστης μπορεί να ρωτήσει το περιεχόμενο ενός συγκεκριμένου δελτίου τύπου.

Δημιουργία βάσης δεδομένων

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

Πάνω απ 'όλα, θα πρέπει οπωσδήποτε να γνωρίζετε τα βασικά της Γλώσσας δομημένων ερωτημάτων (SQL). Το MySQL DBMS αποστέλλεται με μια πλήρη περιγραφή των υποστηριζόμενων προδιαγραφών SQL. Αυτή η γλώσσα είναι εύκολα κατανοητή επειδή οι χειριστές της και οι κατασκευές τους είναι εύκολο να κατανοηθούν και να θυμηθούν. Για να δουλέψετε, χρειάζεστε δηλώσεις για τη δημιουργία (ΔΗΜΙΟΥΡΓΙΑ ή ΕΙΣΑΓΩΓΗ), την επιλογή (ΕΠΙΛΟΓΗ) και τη διαγραφή (ΑΠΟΣΤΟΛΗ ή ΔΙΑΓΡΑΦΗ) δεδομένων, καθώς και την αλλαγή τους (ΕΝΗΜΕΡΩΣΗ, ΤΡΟΠΟΠΟΙΗΣΗ). Σε συγκεκριμένα παραδείγματα, θα χρησιμοποιήσουμε μόνο μερικά από αυτά.

Για να παραλείψετε τη ρύθμιση λογαριασμών χρηστών και την εκχώρηση των απαραίτητων δικαιωμάτων πρόσβασης, ας υποθέσουμε ότι χρησιμοποιείτε τον λογαριασμό διαχειριστή (root).

Βήμα 1

Ανοίξτε ένα παράθυρο τερματικού (εάν χρησιμοποιείτε γραφικό κέλυφος X Window OS Linux ή OS Windows 9x / NT / 2000) και συνδεθείτε στο MySQL DBMS εισάγοντας mysql στη γραμμή εντολών. Σε απάντηση, θα πρέπει να σας ζητηθούν εντολές mysql>.

Βήμα 2

Ας δημιουργήσουμε τη βάση δεδομένων μας πληκτρολογώντας:

ΔΗΜΙΟΥΡΓΙΑ ΒΑΣΗΣ ΔΕΔΟΜΕΝΩΝ db_website;

Θυμηθείτε να πληκτρολογήσετε (;) μετά από κάθε εντολή. Είναι πολύ σημαντικό γιατί στέλνει ένα σήμα στη MySQL για να τερματίσει την είσοδο εντολών.

Χρήση db_website.

Βήμα 4

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

1.CREATE TABLE tbl_news_items (2.col_id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, 3.col_title VARCHAR (100), 4.col_author VARCHAR (100), 5.col_body TEXT, 6.col_date)· DATE.

Βήμα 5

Τώρα που δημιουργήσαμε έναν πίνακα για τη διατήρηση των δεδομένων μας, πρέπει να τον συμπληρώσουμε με μερικά δείγματα δεδομένων. Σημειώστε ότι στην παρακάτω εντολή δεν θα ορίσουμε το πεδίο col_id, γιατί συμπληρώνεται αυτόματα καθώς προστίθενται νέα δεδομένα. Λάβετε επίσης υπόψη ότι η σύνταξη για την ημερομηνία είναι<год/месяц/день>... Έτσι, στη γραμμή εντολών mysql>, πληκτρολογήστε την ακόλουθη εντολή.

8. INSERT INTO tbl_news_items (col_title, _ col_author, col_body, col_date) 9. VALUES (10. «Το πρώτο μου δελτίο τύπου», 11. «Το όνομά σας», 12. «Αυτό το δελτίο τύπου είναι αποθηκευμένο στη βάση δεδομένων MySQL», 13 '2001/4/15' 14.);

Εισαγάγετε μερικά ακόμη παρόμοια ερωτήματα για εισαγωγή. Για να δείτε τι είναι αποθηκευμένο στη βάση δεδομένων, στη γραμμή εντολών mysql>, πληκτρολογήστε:

ΕΠΙΛΟΓΗ * ΑΠΟ tbl_news_items;

Δημιουργία δυναμικών ιστοσελίδων σε Perl

Προετοιμασία για εργασία

Για να εκτελέσετε προγράμματα Perl, χρειάζεστε την έκδοση 5.005 ή 5.6 του διερμηνέα Perl των διανομών Perl Standard ή ActiveState Perl για UNIX ή Win32. Εάν αναπτύσσετε εφαρμογές για λειτουργία υπό Win32, τότε το πακέτο από το ActiveState είναι κάπως πιο βολικό στη χρήση, επιπλέον, περιλαμβάνει ένα βοηθητικό πρόγραμμα PPM για την εγκατάσταση πρόσθετων μονάδων.

Για να οργανώσουμε την αλληλεπίδραση των προγραμμάτων μας Perl με το MySQL DBMS, είναι απαραίτητο το πακέτο Perl να περιλαμβάνει τη μονάδα DBI. Δεδομένου ότι η μονάδα βασικά δεν κάνει τίποτα από μόνη της, αλλά μετατοπίζει όλες τις λειτουργίες για αλληλεπίδραση με βάσεις δεδομένων στο πρόγραμμα οδήγησης που αντιστοιχεί σε αυτές, απαιτείται η εγκατάσταση της βιβλιοθήκης DBD-Mysql (πρόγραμμα οδήγησης για τη βάση δεδομένων MySQL για τη μονάδα DBI). Σύμφωνα με τον Tim Bunce, συγγραφέα και προγραμματιστή της ενότητας, «Το DBI είναι ένα API για πρόσβαση σε βάσεις δεδομένων από προγράμματα Perl. Η προδιαγραφή DBI API ορίζει ένα σύνολο συναρτήσεων, μεταβλητών και κανόνων που χρησιμοποιούνται για διαφανή διασύνδεση με βάσεις δεδομένων.

Η έννοια των προγραμμάτων οδήγησης βάσης δεδομένων είναι πολύ βολική, καθώς στην εφαρμογή σας Perl χρησιμοποιείτε τυπικές κλήσεις DBI, οι οποίες στη συνέχεια προωθούνται ενότητες στο αντίστοιχο πρόγραμμα οδήγησης, το οποίο, με τη σειρά του, θα αλληλεπιδράσει άμεσα με τη βάση δεδομένων, χωρίς να απαιτείται να μελετήσετε τα τεχνικά χαρακτηριστικά κάθε συγκεκριμένου ΣΔΒΔ. Έτσι, υπάρχουν προγράμματα οδήγησης DBD :: Sybase, DBD :: Oracle, DBD :: Informix κ.λπ. ( ρύζι. 1 , ).

Ας ξεφύγουμε λίγο από το εύρος του άρθρου. Ας πούμε ότι το πακέτο DBI δεν περιλαμβάνει πρόγραμμα οδήγησης για ένα συγκεκριμένο DBMS. Σε αυτή την περίπτωση, η γέφυρα DBD-ODBC έρχεται στη διάσωση. Αρκεί να δημιουργήσετε μια νέα πηγή δεδομένων (Όνομα πηγής δεδομένων) για το πρόγραμμα οδήγησης ODBC (Open DataBase Connectivity), όπου πρέπει να επιλέξετε τον τύπο αυτού του DBMS, τη διεύθυνση κεντρικού υπολογιστή στον οποίο θέλετε να δημιουργήσετε τη σύνδεση, το όνομα της βάσης δεδομένων και δεδομένα εξουσιοδότησης, δηλαδή το όνομα χρήστη και τον κωδικό πρόσβασης ( ρύζι. 3). Στη συνέχεια, χρησιμοποιώντας τη μονάδα DBI, αλληλεπιδράστε με τη βάση δεδομένων. Επιπλέον, η λειτουργική μονάδα Win32 :: ODBC (Win32-ODBC) περιλαμβάνεται συνήθως στην τυπική διανομή του ActiveState Perl. Η εργασία με αυτό είναι ελαφρώς διαφορετική από την εργασία με το DBI, αλλά γενικά είναι πολύ παρόμοια. Η μόνη διαφορά είναι ότι το Win32 :: ODBC είναι μια λειτουργική μονάδα μόνο Win32 και σας επιτρέπει να εργάζεστε με εγγενείς λειτουργίες ODBC πιο αποτελεσματικά από το DBD :: ODBC.

Μπορεί να γίνει ένας παράλληλος μεταξύ ODBC και DBI. Το DBI είναι ανάλογο με το ODBC Administrator (Database Driver Manager). Κάθε πρόγραμμα οδήγησης DBD αντιστοιχεί στις λειτουργίες του σε ένα πρόγραμμα οδήγησης ODBC. Το μόνο που μπορεί να προκαλέσει σύγχυση είναι το γεγονός ότι, όπως αναφέρθηκε παραπάνω, υπάρχει ένα πρόγραμμα οδήγησης DBD :: ODBC. Αλλά σας επιτρέπει να δημιουργήσετε μια σύνδεση DBI μόνο με προγράμματα οδήγησης ODBC.

Για να εγκαταστήσετε το DBI και το DBD-Mysql, χρησιμοποιώντας το βοηθητικό πρόγραμμα PPM στο Win32, πληκτρολογήστε:

Ppm εγκατάσταση DBI

Λάβετε υπόψη ότι ο υπολογιστής σας πρέπει να είναι συνδεδεμένος στο Διαδίκτυο σε αυτό το σημείο. Εάν έχετε την αντίστοιχη μονάδα στον τοπικό σας δίσκο, χρησιμοποιήστε τις πληροφορίες βοήθειας εισάγοντας την εντολή:

Βοήθεια Ppm εγκατάστασης

Για χρήστες UNIX, η εγκατάσταση της μονάδας DBI θα είναι σχεδόν ίδια με την εγκατάσταση άλλων λειτουργικών μονάδων Perl:

Tar –zxvf DBI-1.06.tar.gz cd DBI-1.06 / perl Makefile.PL make make test make install

Μπορείτε επίσης να χρησιμοποιήσετε το κέλυφος CPAN. Εάν η έκδοση UNIX του πακέτου ActiveState είναι εγκατεστημένη στον υπολογιστή σας, μπορείτε επίσης να εργαστείτε με το βοηθητικό πρόγραμμα εγκατάστασης PPM. Μερικές φορές συμβαίνει ότι τα κελύφη CPAN και PPM δεν λειτουργούν εάν ένα τείχος προστασίας ή ένα τείχος προστασίας είναι εγκατεστημένο στο εταιρικό δίκτυο στο οποίο είναι συνδεδεμένος ο υπολογιστής σας. Σε αυτήν την περίπτωση, θα σας βοηθήσουν μόνο οι μονάδες με τον πηγαίο κώδικα που έχει φορτωθεί χειροκίνητα. Για να τα εγκαταστήσετε και να συνδεθείτε σε Perl ή Apache, χρειάζεστε έναν διερμηνέα Perl, έναν μεταγλωττιστή C / C ++ ή GCC / PGCC και μερικά από τα βοηθητικά προγράμματα κατασκευής (που παρέχονται από έναν από τους κλώνους του UNIX, καθώς και από το Microsoft Visual C ++), nmake ή dmake. Έτσι, η διαδικασία εγκατάστασης μονάδων είναι κάπως περίπλοκη. Σχεδόν κάθε ένα από αυτά συνοδεύεται από τεκμηρίωση "κατασκευής" που θα σας διευκολύνει να ξεκινήσετε.

Εμφάνιση λίστας άρθρων

Τώρα που έχετε μια λειτουργική βάση δεδομένων δελτίων τύπου, μπορείτε εύκολα να τη συνδέσετε σε μια ιστοσελίδα. Ας ξεκινήσουμε δημιουργώντας μια απλή σελίδα που εμφανίζει μια λίστα με όλα τα διαθέσιμα δελτία τύπου. Σημειώστε ότι από προεπιλογή ο διακομιστής Web Apache "νομίζει" ότι όλα τα έγγραφά σας πρέπει να βρίσκονται στον κατάλογό του htdocs και τα εκτελέσιμα στο cgi-bin του. Επομένως, είναι απαραίτητο να τοποθετήσετε όλα τα αρχεία με την επέκταση .pl στον κατάλογο cgi-bin. Με τη σειρά του, τα αρχεία προτύπου HTML που δημιουργούνται πρέπει να τοποθετηθούν στον κατάλογο tpl. Η ιεραρχία του καταλόγου θα μοιάζει με αυτό:

/ (ρίζα οποιουδήποτε δίσκου) / local / local / usr / local / usr / bin / local / usr / cgi-bin / local / usr / htdocs / local / usr / tpl

Για συστήματα DOS / Windows, η διαδρομή προς το cgi-bin μπορεί να μοιάζει με αυτό:

C: \ local \ usr \ cgi-bin

Βήμα 1

Χρησιμοποιώντας τον αγαπημένο σας επεξεργαστή κειμένου, δημιουργήστε το αρχείο pr-list-tpl.htm:

15. 16. 17. Δελτία Τύπου 2001 18. 19. 20. @[email προστατευμένο] 21.

22.

Αυτό το αρχείο προορίζεται να εμφανίσει μια λίστα με όλα τα διαθέσιμα δελτία τύπου.

Βήμα 2

Δημιουργήστε ένα αρχείο pr-list-block-tpl.htm που θα εμφανίζει κάθε μπλοκ με το δελτίο τύπου που βρέθηκε ως πίνακα:

23.

24. 25. 26.
@[email προστατευμένο]
@[email προστατευμένο], _ @[email προστατευμένο]

Βήμα 3

Δημιουργήστε ένα αρχείο pr-content-tpl.htm που θα εμφανίζει το περιεχόμενο του δελτίου τύπου:

27. 28. 29. Δελτία τύπου 2001: @ TITLE @ 30. 31. 32.

@[email προστατευμένο]

33. 34. 35. 36. 37.
@[email προστατευμένο]
Συγγραφέας: @[email προστατευμένο]Ημερομηνία: @ [email προστατευμένο]
@[email προστατευμένο]
38. Εμφάνιση της λίστας με τα δελτία τύπου .. 39.

40.

Βήμα 4

Δημιουργήστε ένα σενάριο Perl pr-list-dbi.pl που θα διαβάζει δεδομένα από τη βάση δεδομένων db_website και, χρησιμοποιώντας αρχεία HTML προτύπων, θα εμφανίζει μια λίστα με δελτία τύπου (μπορείτε να βρείτε το κείμενο αυτού του σεναρίου στο CD μας).

Τώρα ας περάσουμε από τη λίστα κωδικών και ας δούμε πώς λειτουργεί το πρόγραμμα καταχώρισης δελτίων τύπου.

Οι γραμμές 1-9 είναι σαν ένα μπλοκ αρχικοποίησης στο οποίο δηλώνονται όλες οι καθολικές μεταβλητές και σταθερές:

41. #! / Local / usr / bin / perl 42.43. Χρησιμοποιήστε το DBI. 44. $ dbh = DBI-> connect ('dbi: mysql: db_website', 'root', ''); 45. $ path = "/ local / usr / tpl"; 46. ​​$ TPL_LIST = "$ path / pr-list-tpl.htm"; 47. $ TPL_LIST_BLOCK = "$ διαδρομή / pr-list-block-tpl.htm"; 48. 49. εκτύπωση "Τύπος περιεχομένου: κείμενο / html \ n \ n";

Αρχικά, λέμε στον διακομιστή ιστού Apache μια διαδρομή που υποδεικνύει πού βρίσκεται ο διερμηνέας Perl, η οποία εκτελείται όταν ζητείται το σενάριο, το ελέγχει για σφάλματα και μετά το εκτελεί. Στη συνέχεια, δηλώνουμε την ενότητα DBI (DataBase Interface), οι μέθοδοι της οποίας θα χρησιμοποιηθούν στο πρόγραμμα για την αλληλεπίδραση με τη βάση δεδομένων (γραμμή 3). Στη συνέχεια, δημιουργούμε μια σύνδεση με τη βάση δεδομένων μας db_website (4), προσδιορίζοντας τον root (διαχειριστή) ως όνομα χρήστη σύνδεσης και μια κενή συμβολοσειρά (το προεπιλεγμένο) ως κωδικό πρόσβασης. Στη μεταβλητή διαδρομής $, καθορίστε τη διαδρομή όπου βρίσκονται τα αρχεία προτύπου HTML (5). Στις μεταβλητές $ TPL_LIST και $ TPL_LIST_BLOCK, αντίστοιχα, υποδεικνύουμε τα ονόματά τους (6, 7). Στη συνέχεια, λέμε στον διακομιστή Web ότι όλα τα εξερχόμενα δεδομένα πρέπει να παρουσιάζονται σε μορφή κειμένου MIME / html προκειμένου να εξάγεται η ροή HTML στο πρόγραμμα περιήγησης του χρήστη (9).

Οι γραμμές 11-22 αντιπροσωπεύουν το σώμα του προγράμματος:

50,51 ανοιχτό (L, "$ TPL_LIST"); 52. ενώ ($ line1 = ) (53. chomp ($ line1); 54. if ($ line1 = ~ / \ @ BLOCK \ @ /) (55. read_db (); 56. ins_data (); 57.) other (58. print "$ line1 \ n "; 59.) 60.) 61. κλείσιμο (L); 62,63 $ dbh-> αποσύνδεση.

Ανοίξτε το αρχείο προτύπου pr-list-tpl.htm (11) και κοιτάξτε το σε βρόχο (12-20), γράφοντας κάθε γραμμή που διαβάζεται στη μεταβλητή γραμμής $. Κατά τη διάρκεια κάθε επανάληψης, ελέγχουμε για την παρουσία της λέξης-κλειδιού @ σε αυτή τη γραμμή. [email προστατευμένο](14-19), πράγμα που σημαίνει ότι σε αυτό το μέρος πρέπει να εισαγάγετε ένα μπλοκ με ένα δελτίο τύπου. Μόλις βρεθεί, καλούμε τις διαδικασίες read_db () και ins_data ().

Οι γραμμές 26-39 είναι το κύριο μέρος της ρουτίνας read_db (), η οποία διαβάζει τα περιεχόμενα του πίνακα tbl_news_items που αποθηκεύει τα δελτία τύπου μας:

64.65.66. sub read_db (67. $ c = 0; 68. my ($ sql) = "SELECT * FROM tbl_news_items"; 69. $ rs = $ dbh-> προετοιμασία ($ sql); 70. $ rs -> execute; 71. while (my $ ref = $ rs-> fetchrow_hashref ()) (72. $ id [$ c] = "$ ref -> ('col_id')"; 73. $ title [$ c] = " $ ref -> ('col_title')"; 74. $ συγγραφέας [$ c] = "$ ref -> ('col_author')"; 75. $ ημερομηνία [$ c] = "$ ref -> (' col_date ' ) "; 76. $ c ++; 77.) 78. $ rs-> φινίρισμα (); 79.)

Αρχικοποιούμε τον μετρητή $ c = 0, συνθέτουμε ένα ερώτημα για να επιλέξουμε όλα τα δεδομένα από τον πίνακα (28), εκτελούμε το ερώτημα (29, 30) και μεταφέρουμε τα δεδομένα στο σύνολο εγγραφών (σύνολο εγγραφών) $ rs. Στη συνέχεια, σε έναν βρόχο (31-37), εξάγουμε δεδομένα από το σύνολο εγγραφών χρησιμοποιώντας τη μέθοδο fetshrow_hashref και επιστρέφουμε μια αναφορά στον συσχετιστικό πίνακα% ref (31) που περιέχει τα ονόματα και τις τιμές των πεδίων της τρέχουσας εγγραφής. Γράφουμε τα εξαγόμενα δεδομένα (32-35) στους συνηθισμένους πίνακες @id, @title, @author και @date που αντιστοιχούν στους τύπους τους. Κλείνουμε το σετ ρεκόρ (38).

Οι γραμμές 41-53 είναι το σώμα της διαδικασίας ins_data (), η οποία υλοποιεί την εισαγωγή δεδομένων που εξάγονται από τη βάση δεδομένων στη ροή εξερχόμενων δεδομένων. γραμμές 55-63 - το σώμα της διαδικασίας pr_block () που καλείται σε βρόχο από τη διαδικασία ins_data ():

80. 81. sub ins_data (82. $ toread = "pr-read-dbi.pl"; 83. για ($ i = 0; $ i<$c; $i++) { 84. $line = &pr_block; 85. 86. $line =~ s/\@NUMBER\@/$id[$i]/; 87. $line =~ s/\@TITLE\@/$title[$i]/; 88. $line =~ s/\@AUTHOR\@/$author[$i]/; 89. $line =~ s/\@DATE\@/$date[$i]/; 90. $line =~ s/\@READ\@/$toread/; 91. print "$line"; 92. } 93. } 94. 95. sub pr_block { 96. my($block) = ‘’; 97. open (B, "$TPL_LIST_BLOCK"); 98. while ($line=) (99. $ block = $ block. $ Line; 100.) 101. κλείσιμο (B); 102. επιστροφή ($ μπλοκ)? 103.)

Έτσι, έχοντας λάβει ως αποτέλεσμα της διαδικασίας read_db () τη μέγιστη τιμή του μετρητή $ c, στον βρόχο (43-52) εκτελούμε τη διαδικασία pr_block (), η οποία διαβάζει το περιεχόμενο του pr-list-block- tpl.htm πρότυπο HTML και το γράφει στη μεταβλητή $ block (59), η οποία στη συνέχεια επιστρέφεται (62) στη μεταβλητή γραμμής $ (44) της διαδικασίας ins_data (). Περαιτέρω στον ίδιο κύκλο, αντικαθιστούμε (46-50) τις λέξεις-κλειδιά @ που βρέθηκαν στην εξερχόμενη ροή γραμμής $ [email προστατευμένο], @[email προστατευμένο], @[email προστατευμένο], @[email προστατευμένο], @[email προστατευμένο]στις τιμές των πινάκων @id, @title, @author, @date και της μεταβλητής $ toread που αντιστοιχεί σε αυτήν την επανάληψη βρόχου ($ i).

Εμφάνιση του κειμένου του δελτίου τύπου

Αφού εμφανίσουμε μια λίστα με όλα τα δελτία τύπου που είναι διαθέσιμα στη βάση δεδομένων ( ρύζι. 4), πρέπει να δώσετε στον χρήστη την ευκαιρία να δει το κείμενο ενός από αυτά (μπορείτε να βρείτε και το αντίστοιχο σενάριο στο CD μας).

Το νέο σενάριο pr-read-dbi.pl θα διαφέρει ελαφρώς από αυτό που έχουμε ήδη δημιουργήσει pr-list-dbi.pl.

Αυτή η καταχώριση είναι 98% παρόμοια με την καταχώριση 1, αν και με κάποιες μικρές διαφορές:

  • συνδεδεμένη βιβλιοθήκη CGI για την ανάγνωση της παραμέτρου id (9) από τη συμβολοσειρά ερωτήματος (για παράδειγμα, http: //localhost/cgi-bin/pr-content-dbi.pl? id = 1);
  • χρησιμοποιείται μόνο ένα πρότυπο HTML (pr-content-tpl.htm).
  • το ερώτημα της βάσης δεδομένων συμπληρώνεται με μια υπό όρους ρήτρα SQL WHERE για την επιλογή όλων των δεδομένων που αντιστοιχούν σε ένα συγκεκριμένο δελτίο τύπου από το αναγνωριστικό col_id.
  • Το πεδίο col_body με το κείμενο του επιλεγμένου δελτίου τύπου διαβάζεται επίσης από τη βάση δεδομένων.

Δημιουργία νέου δελτίου τύπου

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

Έτσι, το νέο πρόγραμμα Perl (το οποίο, όπως και τα δύο προηγούμενα, βρίσκεται στο CD) θα διαφέρει από τα προηγούμενα κυρίως στο ότι δεν προορίζεται για την εμφάνιση δεδομένων, αλλά για την προσθήκη τους στη βάση δεδομένων. Επομένως, πρέπει να αλλάξουμε ελαφρώς το τμήμα που είναι υπεύθυνο για την αλληλεπίδραση με τη βάση δεδομένων χρησιμοποιώντας το ερώτημα SQL INSERT και τις αντίστοιχες δηλώσεις της μονάδας DBI.

Οι γραμμές 12-18 είναι το σώμα του κύριου προγράμματος:

12. if ($ cmd ne "add") (13. & show_form; 14.) other (15. $ dbh = DBI-> connect ('dbi: mysql: db_website', _ 'root', ''); 16 . & add_pr; 17.dbh-> αποσύνδεση; 18.)

Εδώ ελέγχουμε εάν η ομάδα έχει φτάσει για να προσθέσει το δελτίο τύπου στη βάση δεδομένων. Μόλις φτάσει, δημιουργούμε μια σύνδεση με τη βάση δεδομένων (15), εκτελούμε την υπορουτίνα app_pr () (16) και τερματίζουμε τη σύνδεση (17). Εάν δεν υπήρχε εντολή, τότε απλώς εμφανίζουμε τη φόρμα συμπλήρωσης (13) για τα δεδομένα του δελτίου τύπου - τη διαδικασία show_form ().

Οι γραμμές 20-36 είναι το κύριο μέρος του δελτίου τύπου pr_add () για την προσθήκη ρουτίνας:

19. 20. sub add_pr (21. $ title = $ q-> param ("pr_title"); 22. $ author = $ q-> param ("pr_author"); 23. $ body = $ q-> param ( "pr_body"); 24. $ body = ~ s / \ r \ n /
/ g; 25.26.my ($ sql) = "INSERT INTO tbl_news_items (col_title, col_author, col_body, col_date) VALUES (\ '$ title \', \ '$ author \', \ '$ body \', CURDATE ()) "; 27. $ rs = $ dbh-> do ($ sql); 28.29.αν ( [email προστατευμένο]) (30. $ rc = $ dbh-> επαναφορά; 31.) else (32. $ rc = $ dbh-> δέσμευση; 33.) 34. 35. εκτύπωση "Τοποθεσία: / cgi-bin / pr-list-dbi .pl \ n \ n "; 36.)

Αρχικά, επεξεργαζόμαστε τα δεδομένα της φόρμας (22-25), συνθέτουμε ένα ερώτημα SQL (27) και το εκτελούμε (27) χρησιμοποιώντας τη μέθοδο DBI $ dbh-> do (). Δεδομένου ότι η διαδικασία εισαγωγής δεδομένων στη βάση δεδομένων εκτελείται εδώ, πρέπει να φροντίσετε για τη δυνατότητα ακύρωσης της λειτουργίας σε περίπτωση αποτυχίας. Για να γίνει αυτό, εισαγάγαμε τον κωδικό αναίρεσης και επαναφοράς συναλλαγής στην προηγούμενη κατάσταση (30-34). Εάν το $ dbh-> do () αποτύχει, αναιρέστε τις αλλαγές που έγιναν (31). Εάν η αποτυχία δεν παρουσιάστηκε, τότε επιβεβαιώνουμε τις αλλαγές που έγιναν (33). Στη συνέχεια, μετά από όλες τις ενέργειες, απλώς μεταβείτε στη σελίδα με μια λίστα με όλα τα δελτία τύπου (36).

Οι γραμμές 37-55 είναι το σώμα της διαδικασίας εξόδου της φόρμας για την εισαγωγή πληροφοριών σχετικά με το νέο δελτίο τύπου (χρησιμοποιείται το πρότυπο HTML, το όνομα του οποίου καθορίζεται στη μεταβλητή $ TPL_INSERT, pr-add-tpl.htm):

37. 38. sub show_form (39. print "Content-type: text / html \ n \ n"; 40. 41. open (L, "$ TPL_INSERT"); 42. while ($ line = ) (43. chomp ($ line); 44. if ($ line = ~ / \ @ /) (45. if ($ line = ~ / \ @ ADD \ @ /) (46. $ toadd = "pr-add -dbi.pl "; 47. $ line = ~ s / \ @ ADD \ @ / $ toadd /; 48.) other (49. $ tolist =" pr-list-dbi.pl "; 50. $ line = ~ s / \ @ LIST \ @ / $ tolist /; 51.) 52.) 53. εκτύπωση "$ line \ n"; 54.) 55. κλείσιμο (L);

Υπερφόρτωση συστήματος

Εφόσον αναπτύσσετε έναν δυναμικό ιστότοπο, ο όγκος των πληροφοριών σε αυτόν μπορεί να αυξηθεί πολύ γρήγορα ανάλογα. Επιπλέον, καθώς αυξάνεται η δημοτικότητα του πόρου σας, αυξάνεται και ο αριθμός των επισκεπτών του, γεγονός που μπορεί να οδηγήσει σε υπερφόρτωση διακομιστή, δηλαδή σε μείωση της απόδοσης του συστήματος. Πριν ξεκινήσετε να αναζητάτε τρόπους για να αυξήσετε την ισχύ του υλικού και να προσπαθήσετε να βρείτε τη διαμόρφωση ενός νέου συστήματος, μπορείτε να προσπαθήσετε να εξαλείψετε μία από τις πιθανές αιτίες υπερβολικής κατανάλωσης RAM. Η ίδια Perl μπορεί να είναι ο ένοχος. Το γεγονός είναι ότι κάθε φορά που έχετε πρόσβαση σε ένα συγκεκριμένο σενάριο Perl, ο διακομιστής Ιστού φορτώνει τον διερμηνέα στη μνήμη RAM (χρειάζεται από 500-1000 KB στον σκληρό δίσκο) και ο τελευταίος αναλύει το πρόγραμμα από την αρχή μέχρι το τέλος αναζητώντας συντακτικά σφάλματα ... Μετά από αυτό, το διαβάζει ξανά, αρχικοποιώντας μεταβλητές και συναρτήσεις, διαβάζει τα δεδομένα εισόδου (παραμέτρους), επεξεργάζεται και επιστρέφει τα αποτελέσματα. Μπορείτε να φανταστείτε τι θα συμβεί εάν ταυτόχρονα τα δελτία τύπου θέλουν να δουν εκατοντάδες επισκέπτες στον ιστότοπό σας;

Για να επιταχυνθεί αυτή η διαδικασία, έχουν δημιουργηθεί ειδικές λύσεις, οι οποίες είναι πρόσθετες ενότητες για τον διακομιστή Web Apache - mod_fastcgi και mod_perl.

Η μονάδα FastCGI (mod_fastcgi) προϋποθέτει εκτεταμένη χρήση εργαλείων ανταλλαγής δεδομένων μεταξύ των εκτελούμενων διεργασιών (εργασιών) του λειτουργικού συστήματος. Στην αρχή της εργασίας του, ο διακομιστής Web ενεργοποιεί το πρόγραμμα CGI και αφήνει το πρόγραμμα και πολλά αντίγραφά του να τρέχουν στο παρασκήνιο. Τυχόν αιτήματα προς το πρόγραμμα απλώς θα μεταφερθούν στα ήδη ενεργά αντίγραφα, γεγονός που θα απαλλάξει τον διακομιστή από το πρόσθετο φορτίο που σχετίζεται με την επανενεργοποίηση της διαδικασίας.

Η ενότητα mod_perl σάς επιτρέπει να φορτώσετε την Perl στη μνήμη RAM στον ίδιο χώρο διευθύνσεων με τον ίδιο τον διακομιστή ιστού Apache και να αφήσετε την Perl στη μνήμη μέχρι να φύγει ο τελευταίος, εμποδίζοντας τη φόρτωση του επόμενου αντιγράφου του διερμηνέα κατά την πρόσβαση στο πρόγραμμα CGI. Αυτή η ενότητα χρησιμοποιείται πιο συχνά από το FastCGI, καθώς δεν απαιτεί αλλαγές στο πρόγραμμα.

ComputerPress 6 "2001

Η διεπαφή για τη διαχείριση στατικών σελίδων αποτελείται από ένα ενιαίο μπλοκ στο οποίο βρίσκονται διάφορα στοιχεία (Εικόνα 5.1).
Στην πραγματικότητα, αυτή η σελίδα εμφανίζει έναν πίνακα με τις στήλες "Τίτλος" και "Διεύθυνση σελίδας".
Στο επάνω μέρος υπάρχει ένα πεδίο εισαγωγής όπου μπορείτε να καθορίσετε πόσες στατικές σελίδες θα εμφανίζονται στη σελιδοποίηση.
Διατίθενται επίσης 3 μαζικές λειτουργίες σε στατικές σελίδες - διαγραφή, δημοσίευση, κατάργηση δημοσίευσης.

Προσθήκη νέας σελίδας

Για να προσθέσετε μια νέα σελίδα, κάντε κλικ στην καρτέλα "Προσθήκη στατικής σελίδας" (Εικόνα 5.2).

Μετά από αυτό, θα ανακατευθυνθείτε σε μια σελίδα με μια φόρμα που πρέπει να συμπληρώσετε. (Εικόνα 5.3).


εικ. 5.3

Προσοχή:απαιτείται το πεδίο τίτλου και το σώμα της ίδιας της σελίδας.

Επικεφαλίδα- υποδεικνύεται το όνομα της νέας σελίδας. Τα δεδομένα τίτλου είναι το περιεχόμενο της ετικέτας Title, που εμφανίζεται στη γραμμή τίτλου του παραθύρου του προγράμματος περιήγησης.
Κοντράλτο. όνομα- εδώ πρέπει να δώσετε έναν σύνδεσμο προς αυτήν τη σελίδα. Προσοχή:ο σύνδεσμος πρέπει να είναι στα λατινικά και να μην περιέχει ειδικούς χαρακτήρες και κενά.
Περιγραφή- χρησιμοποιείται για τη δημιουργία μιας σύντομης περιγραφής της σελίδας, που χρησιμοποιείται από τις μηχανές αναζήτησης για ευρετηρίαση.
Λέξεις-κλειδιά- λέξεις-κλειδιά για τη μετα-ετικέτα λέξης-κλειδιού.

Ρυθμίσεις
  • Δημοσίευση - εάν επιλεγεί αυτή η σημαία, αυτή η σελίδα δεν θα εμφανίζεται στον ιστότοπο.
  • Να επιτρέπεται η χρήση ετικετών HTML - εάν επιλεγεί αυτή η σημαία, στο σώμα της σελίδας, εκτός από τους κωδικούς bb, μπορείτε να χρησιμοποιήσετε ετικέτες html.
  • Απενεργοποίηση αυτόματης μορφοποίησης - εάν επιλεγεί αυτή η σημαία, η αυτόματη μορφοποίηση κειμένου, η αναδίπλωση γραμμής και ούτω καθεξής θα απενεργοποιηθούν.
Δείγμα- εδώ πρέπει να καθορίσουμε το πρότυπο που θα χρησιμοποιεί η συγκεκριμένη σελίδα.
Το πρότυπο πρέπει να βρίσκεται στον κατάλογο / templates / (template_name) / static / directory και πρέπει να έχει την επέκταση .tpl
Συνεχίζοντας το θέμα:
Διάφορα

Σήμερα, τα κοινωνικά δίκτυα στο Διαδίκτυο είναι εξειδικευμένοι ιστότοποι που φέρνουν τους ανθρώπους κοντά σε ένα δίκτυο σε κάποια συγκεκριμένη βάση. Στην ανάπτυξή τους...