Chargement paresseux images comment
Je suis en train d'élaborer une boutique en ligne .À la page des produits basés sur la catégorie j'ai mis un peu de javascript en fonction de filtrage. Cependant un problème se pose si une catégorie a un lot de produits.
Ce lien a quelque chose de similaire, je ne ...
http://www.snowandrock.com/sunglasses/snowboard/fcp-category/list?resetFilters=true
Comment jamais, cette page est très lent et est de plus de 2 mo !!!
Chaque produit pour moi les besoins de la moitié killobyte mais l'image est le problème..
Je suis donc à la recherche comment chargement différé des images..
Depuis ma page a la pagination à la différence de ce site, je pense que le chargement des images qui sont visibles seulement à la page est une solution.Le problème cependant, c'est comment faire pour travailler à la fois pour le javascript et non javascript activé les gens..
La seule solution que j'ai est bien stocker le lien à la classe css en quelque sorte de l'image du non visible, produits et s'affiche après le filtrage de modifier en javascript l'image src...
Non javascript utilisateurs n'ont pas ce problème que de cliquer sur un filtre de naviguer vers d'autres pages...
Toute autre idée?
source d'informationauteur GorillaApe
Vous devez vous connecter pour publier un commentaire.
Quatre options:
Voici trois options pour vous:
Utiliser une image d'arrière-plan
Kangkan de l'arrière-plan de réponse a ce couvert.
Si cela ne fonctionne pas pour vous, je suis en supposant que vous avez seulement besoin de l'aide avec le JavaScript activé choses, puisque vous avez dit que le non-JavaScript les utilisateurs verront une page différente.
Utiliser un plug-in
Pagination a été fait. Vous avez dit dans un commentaire que vous êtes à l'aide de jQuery. Il y a beaucoup de plugins jQuery pour la pagination. Trouver celui que vous aimez, et de l'utiliser. Ils seront de qualité variable, de sorte que vous aurez envie de les tester et d'examiner leur code, mais je suis sûr qu'il y a une bonne qualité.
Pagination côté serveur
C'est là la principale chargement de la page soit sans aucun produits à tous, ou seulement avec la première page de produits. En général, vous mettrais tous les produits dans un récipient, comme ceci:
Alors vous auriez l'habitude des contrôles d'INTERFACE utilisateur pour le déplacement entre les pages de résultats. Vous auriez une ressource côté serveur qui a retourné des extraits de code HTML ou au format JSON de données que vous pouvez utiliser pour alimenter la liste. Je vais utiliser HTML pour la simplicité (bien que je serais probablement utiliser JSON dans une production de l'app, car il aurait tendance à être plus petits). Chaque entrée d'un produit est son propre bloc:
...et puis la page renvoie autant que vous pensez est approprié. Vous demandez à la page à l'aide d'Ajax et de mise à jour de la liste des produits à l'aide de JavaScript. Puisque vous avez dit que vous utilisez jQuery, cela peut être carrément simple:
Voici un exemple de prototype (pas de code de production); il faux l'Ajax parce que JSBin me donnait Ajax questions.
Une grande page de téléchargement, puis JavaScript côté client pagination
Je ne suis pas sûr de savoir comment vous avez fait votre filtrage, mais si vous avez un élément qui contient les informations sur le produit, vous pouvez stocker l'URL de l'image dans un
data-xyz
attribut:Puis lorsque votre code rend visible, vous pouvez facilement ajouter une
img
:Modifier Dans un commentaire d'ailleurs vous dit que vous êtes à l'aide de jQuery. Si oui, une traduction de la ci-dessus pourrait ressembler à ceci:
Pas besoin de l'enlever à nouveau lorsque la clandestinité, car l'image sera déjà montré, c'est pourquoi j'ai supprimer l'attribut une fois que nous l'avons utilisé.
La raison pour laquelle j'ai utilisé le
data-
est le préfixe de validation: en HTML5, vous pouvez définir votre owwndata-xyz
attributs et vos pages seront encore passer à la validation. Dans les versions précédentes de HTML, vous n'étiez pas autorisé à définir vos propres attributs (bien qu'en pratique, aucun des principaux navigateurs soucis) et donc, si vous avez utilisé votre propre attribut pour cela, la page ne serait pas valider.Références (w3.org):
-*
attributsgetElementById
createElement
getAttribute
removeAttribute
appendChild
Hors-sujet, mais un beaucoup de cette substance devient beaucoup plus facile si vous utilisez une bibliothèque JavaScript comme jQueryFermeturePrototypeYUIou plusieurs autres pour lisser les bords rugueux pour vous.(Vous avez dit depuis que vous êtes à l'aide de jQuery.)Si vous souhaitez tout simplement de charger les images lentement et le reste de la page est chargé en premier, vous pouvez mettre les images comme arrière-plan et ne pas utiliser le
<img>
tag. Si vous utilisez le<img>
étiquette, l'image est chargée au moment du chargement de la page et donc le chargement de la page est lente. Cependant, les images d'arrière-plan de charges après la page est affiché à l'utilisateur. L'utilisateur peut lire le texte et voir les images de chargement après un certain temps.Je suis assez certain qu'il n'est pas possible en HTML sans une sorte de Javascript intervention.
Après tout, si c'était possible de le faire sans scriping, pourquoi quelqu'un aurait-il mis en œuvre dans le code Javascript de la première place?
Ma question est: Combien de visiteurs avez-vous obtenir qui de nos jours n'ont pas Javascript activé? Je parie que c'est très peu. Et dans tous les cas, ces gens sont habitués à des sites qui ne sont pas pleinement fonctionnels lorsqu'ils ont désactivé javascript; votre site sera effectivement mieux que la plupart, si la seule différence qu'ils ont à mettre en place avec est plus lente vitesse de chargement.
(ps - je présume que vous êtes en utilisant Jquery plugin LazyLoad pour le Javascript activé les gens?)
Je vous suggère de mettre en œuvre image réactive approche afin d'éviter d'énormes fichiers d'image sur les périphériques qui ne peut pas l'afficher correctement (ou de l'homme ne peut pas faire la différence).
J'ai écrit le code suivant pour mon propre site. J'ai utilisé JQuery:
1. Nom de toutes les classes, où tu veux chargement différé du même nom, dire "async"
2. Copiez le véritable emplacement de l'image à partir de 'src' de 'alt' attribut
3. Après la fin de la page de chargement de mon script permet de copier tous les 'alt' valeurs dans 'src'
Regardez l'exemple. C'est plein de travail exemple de code html:
Vous pouvez sentir la vitesse réel du site où je l'ai utilisé
http://virtual-doctor.net/
EDIT:j'ai relu votre question & remarqué vous aussi vous voulez que cela fonctionne pour les personnes avec le Javascript désactivé! Alors oui, ma réponse n'est pas acceptable - mais je vais le laisser pour l'enregistrement.
Voici quelques bibliothèques Javascript pour l'Image de Chargement Paresseux.
Ils vous aider à charger les images nécessaires lorsque les éléments '" être en vue, en changeant simplement l'attribut src de l'image.
github.com/toddmotto/echo et toddmotto.com/echo-js-simple-javascript-image-lazy-loading : plaine JS, IE8+, 2KB, à seulement 5 contributeurs github.com/toddmotto/echo/graphs/contributors
github.com/dinbror/blazy/ et dinbror.dk/blog/blazy - plaine JS, IE7+, 1.2 KB (minifiés et gzippé), UN seul contributeur github.com/dinbror/blazy/graphs/contributors
github.com/tuupola/jquery_lazyload et http://www.appelsiini.net/projects/lazyload : jQuery dépendance, Licence MIT, testé avec Safari 5.1, Safari 6, Chrome 20, Firefox 12 sur OSX & Chrome 20, c'est à dire 8 & IE 9 sur Windows, Safari 5.1 sur iOS 5 pour iPhone et iPad. 18 contributeurs https://github.com/tuupola/jquery_lazyload/graphs/contributors
github.com/luis-almeida/unveil et luis almeida.github.io/dévoiler - spécial: version légère de Lazy Load github.com/tuupola/jquery_lazyload : IE7+, jQuery dépendance, Licence MIT, 5 contributeurs https://github.com/luis-almeida/unveil/graphs/contributors
github.com/shprink/BttrLazyLoading et bttrlazyloading.julienrenaux.fr - spécial: dédié pour le responsive design : jQuery dépendance, IE9+, Licence MIT, 3 KO (minifiés & zip), 5 contributeurs github.com/shprink/BttrLazyLoading/graphs/contributors
Important: je suis encore en train de chercher lequel de ces bibliothèques Javascript est préférable d'utiliser. Faire vos devoirs, je dirais, prenez le temps de rechercher ce qui est le meilleur outil pour le travail. Mes exigences sont généralement:
license
dependencies
browser support
device support
weight
community
ethistory
.