Σήμερα θα δούμε: Οι αληθινοί γνώστες της μουσικής γνωρίζουν ότι για την ποιότητα...
Με τη χρήση αργής φόρτωσης, οι εικόνες και άλλα υλικά στον ιστότοπο φορτώνονται ασύγχρονα και πιο συγκεκριμένα, αφού φορτωθεί πλήρως το ορατό τμήμα της ιστοσελίδας ή αποκλειστικά όταν εμφανίζεται το ορατό τμήμα του παραθύρου του προγράμματος περιήγησης. Για παράδειγμα, εάν ένας επισκέπτης δεν κάνει κύλιση στο τέλος της σελίδας, τότε οι εικόνες που βρίσκονται στο κάτω μέρος δεν θα φορτωθούν.
Η τεμπέλης φόρτωση σχετίζεται με πολλούς πόρους, ειδικά σε αυτούς με πληθώρα εικόνων. Επισκεφτείτε οποιαδήποτε ηλεκτρονική υπηρεσία με φωτογραφίες υψηλής ανάλυσης και παρατηρήστε πώς ο ιστότοπος φορτώνει μόνο τις φωτογραφίες που είναι ορατές στην οθόνη σας και όταν κάνετε κύλιση προς τα κάτω, οι νέες φωτογραφίες αρχίζουν να φορτώνουν μόλις εμφανιστούν στην οθόνη σας. Καθώς κάνετε κύλιση, τα σύμβολα κράτησης θέσης αντικαθίστανται με εικόνες υψηλής ανάλυσης.
Υπάρχουν συχνά περιπτώσεις όπου ένα συγκεκριμένο τμήμα μιας σελίδας δεν είναι ορατό σε όλους, αλλά δαπανάται τεράστιος όγκος πόρων για την επεξεργασία του ή τη μετάδοση υλικού. Τότε είναι που ήρθε η ώρα να σκεφτούμε την τεμπέλικη φόρτωση, η οποία αποτρέπει τη δημιουργία και τη φόρτωση κρυφών στοιχείων μέχρι να χρειαστεί να προβληθούν ή να χρησιμοποιηθούν.
Μόνο μια σημείωση.
Η Lazy φόρτωση ενεργοποιείται από και δημιουργείται από συμβάντα που παρακολουθούνται από το . Επομένως, πριν χρησιμοποιήσετε την ασύγχρονη φόρτωση, είναι σημαντικό να λάβετε υπόψη ότι η συνάρτηση δεν θα είναι διαθέσιμη σε χρήστες που δεν διαθέτουν JS και τα ρομπότ μηχανών αναζήτησης δεν θα βλέπουν το περιεχόμενο που κρύβεται από το σενάριο.
Με απλά λόγια, οι φωτογραφίες δεν θα φορτωθούν εκτός εάν ο χρήστης κάνει κύλιση σε αυτό το σημείο της σελίδας. Και αυτό έχει θετική επίδραση στην εξοικονόμηση επισκεψιμότητας και επομένως πολλοί χρήστες που χρησιμοποιούν gadget και όσοι έχουν αδύναμο Διαδίκτυο θα εκτιμήσουν αυτό το χαρακτηριστικό του πόρου. Την επόμενη φορά σίγουρα θα θέλουν να το επισκεφθούν ξανά.
Με βάση τα παραπάνω, μπορούμε να συμπεράνουμε ότι το lazy loading βελτιώνει σημαντικά την απόδοση του ιστότοπου.Λειτουργία φόντου.
5 Lazy Loading Επιλογές για εικόνεςΑς μιλήσουμε για τις πιο συνηθισμένες και έτοιμες λύσεις lazy φόρτωσης εικόνων.
Σε μια απλοποιημένη έκδοση, αυτό το σενάριο αργής φόρτωσης αντικαθιστά το χαρακτηριστικό src με data-src στην ετικέτα img:
Τα στοιχεία img που περιέχουν χαρακτηριστικά data-src είναι κρυμμένα στο . Μετά τη φόρτωση των εικόνων, εμφανίζονται ομαλά χρησιμοποιώντας μεταβάσεις:
Img (αδιαφάνεια: 1; μετάβαση: αδιαφάνεια 0,3 δευτ.; ) img (αδιαφάνεια: 0; )
Στη συνέχεια, η JavaScript μεταβιβάζει το χαρακτηριστικό src σε όλες τις ετικέτες img, οι οποίες τελικά λαμβάνουν την τιμή του χαρακτηριστικού data-src. Αφού φορτωθούν όλες οι εικόνες, το data-src αφαιρείται από το img :
ForEach.call(document.querySelectorAll("img"), function(img) (img.setAttribute("src", img.getAttribute("data-src")); img.onload = function() (img.removeAttribute( "data-src");
Ο David Walsh παρείχε επίσης μια εναλλακτική λύση σε περίπτωση αποτυχίας JavaScript, η οποία είναι αποτελεσματική και απλή στην εφαρμογή. Ωστόσο, η λειτουργικότητά του δεν επιτρέπει τη φόρτωση κατά την κύλιση της ιστοσελίδας. Αυτό σημαίνει ότι το πρόγραμμα περιήγησης φορτώνει όλες τις εικόνες, ανεξάρτητα από το αν ο επισκέπτης τις «προσέγγισε» ή όχι. Ναι, η εναλλακτική σάς επιτρέπει να εμφανίζετε τη σελίδα πιο γρήγορα, επειδή οι εικόνες φορτώνονται μετά το HTML, αλλά δεν θα υπάρξει εξοικονόμηση κίνησης.
Η τεχνική περιλαμβάνει lazy loading, η οποία χρησιμοποιεί JS ως βελτίωση στο τυπικό CSS και HTML. Η προοδευτική βελτίωση διασφαλίζει ότι οι εικόνες εμφανίζονται στους χρήστες ακόμη και αν η JavaScript που είναι υπεύθυνη για την εμφάνισή τους είναι απενεργοποιημένη ή εμφανίζεται ένα σφάλμα που εμποδίζει τη λειτουργία του σεναρίου.
Η προοδευτική βελτίωση έχει πολλά πλεονεκτήματα:
Μπορείτε να μάθετε αναλυτικές πληροφορίες σχετικά με τη λύση Osborne.
Νο 3. Πρόσθετο bLazy.js χρησιμοποιώντας απλό JSΑυτό το σενάριο είναι ελαφρύ, εκτελεί ασύγχρονη φόρτωση και λειτουργεί με πολλές εικόνες για να εξοικονομήσει κίνηση και αιτήματα διακομιστή. Η χρήση του παρέχει:
Τυπική υλοποίηση. Σήμανση:
Η ετικέτα img πρέπει να αλλάξει:
JavaScript: καθορίστε μια τυπική κλήση bLazy και διαμορφώστε το αντικείμενο χρησιμοποιώντας τον χάρτη επιλογών:
Var bLazy = new Blazy(( //options ));
Νο 4. Πρόσθετο Lazy Load XT jQueryΈνα εξαιρετικό πρόσθετο για να γράψετε εύκολα το δικό σας σενάριο τεμπέλης φόρτωσης. Λάβετε υπόψη ότι υπάρχει μια πλήρης έκδοση του πρόσθετου jQuery, όπου μπορείτε να φορτώσετε βίντεο, iframes και άλλες ετικέτες που περιέχουν το χαρακτηριστικό src μέσω ασύγχρονης φόρτωσης και υπάρχει μια απλοποιημένη έκδοση που είναι αφιερωμένη αποκλειστικά στην απλή τεμπέλικη φόρτωση.
Για να χρησιμοποιήσετε την προσθήκη στον ιστότοπο, πρέπει να προσθέσετε τη βιβλιοθήκη jQuery πριν από την ετικέτα κλεισίματος, προσδιορίζοντας jquery.lazyloadxt.js (απλοποιημένη έκδοση) ή jquery.lazyloadxt.extra.js (εκτεταμένη):
Υπάρχει επίσης μια εναλλακτική επιλογή που σας επιτρέπει να μην χρησιμοποιείτε ολόκληρο το πρόσθετο - ένα ελαφρύ σενάριο jqlight.lazyloadxt.min.js:
Στις εικόνες, αντικαταστήστε το src με το χαρακτηριστικό data-src:
Το πρόσθετο μπορεί να ενεργοποιηθεί αυτόματα ή μπορείτε να το κάνετε μόνοι σας. Για να το κάνετε αυτό, απλώς εισάγετε:
$(στοιχεία).lazyLoadXT();
Το Lazy Load XT jQuetry προσθέτει μεγάλο αριθμό πρόσθετων. Για παράδειγμα:
Μπορείτε να προσθέσετε διάφορα εφέ από το Animate.css για να φορτώσετε εικόνες.
Μπορείτε να δείτε όλα τα πρόσθετα και τις επιλογές χρησιμοποιώντας αυτόν τον σύνδεσμο.
Νο 5. Θολή εικόνα από τον Craig BucklerΠιθανότατα έχετε παρατηρήσει σε ορισμένους ιστότοπους πώς η κύρια εικόνα ενός άρθρου είναι αρχικά θολή, αλλά στη συνέχεια φορτώνεται μια καθαρή εικόνα υψηλής ποιότητας. Υπάρχουν πολλές επιλογές για τη μεταφόρτωση φωτογραφιών χρησιμοποιώντας τη μέθοδο του εφέ θολώματος. Ένας από τους καλύτερους είναι ο Craig Buckler.
Τα πλεονεκτήματα της τεχνικής είναι:
Μπορείτε να κάνετε λήψη του κώδικα από το αποθετήριο ιστότοπου GitHub.
Πρώτα πρέπει να συμπεριλάβετε τη βιβλιοθήκη jQuery:
Η ουσία της μεθόδου είναι να φορτώσει το απαιτούμενο στοιχείο div από το αριστερό αρχείο στη σελίδα προορισμού χρησιμοποιώντας AJAX.
Χαρτοφυλάκιο Εμφάνιση περισσότερων...
Όλα είναι αρκετά απλά και ξεκάθαρα. Πρέπει όμως να προσέξεις το div με το id=”smartPortfolio”, γιατί είναι στο πιο σημαντικό σενάριο υπεύθυνος για τη φόρτωση περιεχομένου από έγγραφα τρίτων. Το «κοντέινερ» του χαρτοφυλακίου είναι το SmartPortfolio. MoreButton – ένα κουμπί στο οποίο, όταν κάνετε κλικ, φορτώνει ένα άλλο τμήμα χαρτοφυλακίου. LoadingDiv – μέρος της σελίδας όπου το κείμενο θα εμφανίζεται εάν το χαρτοφυλάκιο είναι πλήρως ανοιχτό ή παρουσιαστεί οποιοδήποτε σφάλμα.
Για παράδειγμα, πολλά άτομα που διαβάζουν το άρθρο θα δοκιμάσουν στη συνέχεια το σενάριο μέσω του αρχείου ευρετηρίου στο πρόγραμμα περιήγησης αντί να το ανεβάσουν στον διακομιστή. Αυτό θα εμφανίσει μια ειδοποίηση σφάλματος. Και αν υπάρχει επίσης αδύναμη σύνδεση στο Διαδίκτυο, τότε τα αρχεία θα χρειαστούν περισσότερο χρόνο για τη λήψη. Επομένως, είναι σημαντικό να γράψετε ένα μήνυμα ή να εισαγάγετε μια εικόνα που να ενημερώνει τον χρήστη ότι η λήψη βρίσκεται σε εξέλιξη.
Εδώ είναι το ίδιο το σενάριο, για να το συνδέσετε πρέπει να εισαγάγετε τον κώδικα πριν από την ετικέτα κλεισίματος σώματος:
Var lazyload = τεμπέλης || () (function($, lazyload) ( "use strict"; var page = 2, buttonId = "#moreButton", loadingId = "#loadingDiv", container = "#smartPortfolio"; lazyload.load = function() ( var url = "./pages/" + page + ".html"; $(buttonId).απόκρυψη (loadingId). !response ||. answer.trim() == "ΚΑΜΙΑ") ( $(buttonId).fadeOut(); απάντηση) ($(loadingId).text("Συγγνώμη, υπήρξε κάποιο σφάλμα με το αίτημα. Ανανεώστε τη σελίδα."); ) ) $(buttonId). ).appendTo($(container));
Στη δομή του πόρου Ιστού, οι σελίδες από τις οποίες θα ληφθούν τα δεδομένα για να φορτωθούν όταν πατηθούν βρίσκονται στο φάκελο σελίδων. Περιέχει 3 αρχεία, το τελευταίο είναι κενό. Αυτό προβλέπεται από τη λογική του σεναρίου. Η διαδρομή σε αυτό μοιάζει με αυτό:
Var url = "./pages/" + page + ".html";
Αλλά όταν χρησιμοποιείτε μια διαφορετική διαδρομή, είναι σημαντικό να την αντικαταστήσετε στο ίδιο το σενάριο. Το ίδιο πρέπει να κάνετε εάν χρησιμοποιήσατε άλλα αναγνωριστικά:
ButtonId = "#moreButton", loadingId = "#loadingDiv", container = "#smartPortfolio";
Στη συνέχεια, όπως αναφέρθηκε προηγουμένως, πριν από την ετικέτα body (closing), υποδεικνύουμε το σενάριο:
Σύναψη
Η τεμπέλης φόρτωση σάς επιτρέπει να επιταχύνετε την απόδοση του ιστότοπου και να εξοικονομήσετε σημαντικά κίνηση λόγω του γεγονότος ότι τα αντικείμενα που βρίσκονται εκτός του εύρους ορατότητας του παραθύρου του προγράμματος περιήγησης φορτώνονται μόνο αφού το χρειαστεί ο χρήστης. Λόγω της ποικιλίας των τύπων ασύγχρονης φόρτωσης και των επιλογών υλοποίησης, μπορεί να χρησιμοποιηθεί για διαφορετικούς τύπους ιστότοπων και την επισκεψιμότητα-στόχο τους.
ένα! Η διάσπαση του περιεχομένου σε σελίδες με αριθμούς είναι ένα κλασικό σχήμα σελιδοποίησης, διαισθητικό και οικείο στους χρήστες. Ωστόσο, πρόσφατα όλο και περισσότεροι ιστότοποι αρχίζουν να «θέτουν στην πράξη» αυτόν τον τύπο πλοήγησης στη σελίδα, όπως το Infinite Scroll. Ακόμη και γίγαντες όπως η Google, το Facebook και η VKontakte δεν αποτελούσαν εξαίρεση. Φυσικά, αυτός ο τύπος σελιδοποίησης έχει τα πλεονεκτήματα και τα μειονεκτήματά του, αλλά αυτό είναι μια άλλη συζήτηση. Σε αυτό το σεμινάριο θα δούμε πώς να εφαρμόσουμε μια τέτοια πλοήγηση.
Ναι, όλα είναι πολύ απλά, αν ο χρήστης έχει ήδη κάνει κύλιση σε έναν συγκεκριμένο αριθμό αναρτήσεων και βρίσκεται στο κάτω μέρος της σελίδας, τότε περισσότερα μηνύματα φορτώνονται με μια μικρή καθυστέρηση. Για να γίνει αυτό, χρησιμοποιώντας το $.post δημιουργούμε ένα αίτημα POST στη σελίδα για λήψη δεδομένων από τη βάση δεδομένων (αρχείο .php), η δομή HTML των εγγραφών δημιουργείται στο ίδιο αρχείο. Μετά από αυτό, δομώντας τη σήμανση HTML, τα δεδομένα επιστρέφονται στο σενάριο και τοποθετούνται στη σελίδα.
Η διαδικασία προσδιορισμού της θέσης του χρήστη στη σελίδα:
1 | // Εάν η κύλιση είναι ενεργοποιημένη // Ελέγξτε αν ο χρήστης βρίσκεται στο κάτω μέρος της σελίδας // Διαδικασία σε εξέλιξη // Εκτελέστε μια συνάρτηση για ανάκτηση δεδομένων με καθορισμένη καθυστέρηση GetData() ; ) , $settings.delay ) ; }
|
Πιθανότατα παρατηρήσατε τη χρήση μεταβλητών, παραμέτρων πρόσθετων, για να το πούμε έτσι, περισσότερα για αυτές λίγο αργότερα. Η συνάρτηση αιτήματος AJAX για ένα αρχείο PHP getData() μοιάζει με αυτό:
1 | // Συνάρτηση αιτήματος AJAX // Δημιουργία αιτήματος POST στο ajax.php Δράση: "κύλιση σελιδοποίησης" ) , συνάρτηση (δεδομένα) ) .html ($initmessage) ; // Εάν τα δεδομένα που επιστρέφονται είναι άδεια, τότε αναφέρετέ τα // Προσθέστε τα ληφθέντα δεδομένα στο περιεχόμενο DIV // Η διαδικασία ολοκληρώθηκε } ) ; |
Το σενάριο PHP για την υποβολή ερωτημάτων στη βάση δεδομένων και τη δημιουργία της δομής των μηνυμάτων εξόδου μπορεί να φαίνεται αποδεκτό από εσάς. Το μόνο που χρειάζεται να κάνετε είναι να πάρετε κάποιες πληροφορίες από τη βάση δεδομένων MySQL της επιλογής σας. Το παρακάτω είναι ένα πολύ απλό αρχείο ajax.php που λαμβάνει πληροφορίες από μια βάση δεδομένων MySQL και εμφανίζει το περιεχόμενο με τίτλο και σύνδεσμο.
1 |
Συνιστούμε να διαβάσετε |