2016-05-16 5 views
-1

Ich habe eine Art von Lazy Load für Bilder erstellt. Es funktioniert wie folgt:Ist es eine gute Idee, jquery Funktion zu verwenden, die jede 500ms laufen?

Alle 500ms überprüfen Sie photoes welche Sie auf dem Gerät sehen und wenn Sie sehen, beginnen Sie, echtes Bild zu laden, und diese Funktion wird nie für Bilder, die geladen, aber wenn Bild kann nicht geladen wird es erneut versuchen, wenn Sie sehen dieses Bild wieder.

Gibt es ein Problem, diese Art von Funktion alle 500ms zu verwenden?

+1

Also im Grunde senden Sie Anfrage an 'server' jedes _500ms_ reelles Bild zu laden .. ich finde, dass das eine schwere Last zu' server' sein wird, wenn Sie jeden _500ms_ senden Anfrage Besser. Zeit erhöhen. –

+0

Meine Hauptfrage ist warum? Was lässt Sie glauben, dass es das Bild ein zweites Mal laden kann, wenn es das erste Mal nicht funktioniert? – Liam

+0

Nein ich dont @Guruprasad Rao.It nur Anfrage für Bilder, die nicht lädt einmal, wenn Fehler beim Laden passiert es wird versuchen, wenn Sie es wieder auf Ihrem Bildschirm sehen, müssen Sie nur nach unten und oben scrollen und wieder sehen und Anfrage wird senden wieder –

Antwort

0

Es klingt, als würden Sie dies als Reaktion auf die Bilder in Sicht kommen? Anstatt alle 500ms alle Bilder auf der Seite abzufragen, um zu sehen, ob sie in Sicht sind, wäre es vielleicht besser, die Prüfung nur auszulösen, wenn die Seite gescrollt hat (oder was auch immer bewirkt, dass Bilder gescrollt werden nicht häufiger zu sein, sobald als alle 500 ms, aber es hat den Vorteil:

  1. Nicht ein 500ms Intervall Schleife die ganze Zeit
  2. Nicht die Bilder im Hinblick auf die Überprüfung ausgeführt wird, die unnötig

I Ich gehe davon aus, dass die Bilder beim Scrollen des Benutzers ein- und ausgehen, also was Sie tun möchten in diesem Fall ist wie folgt:

  1. Bind ein Ereignis $(window).scroll
  2. es Haben Sie eine Veranstaltung nach einer festgelegten Zeit mit setTimeout (500ms in Ihrem Fall) feuern.
  3. dass Timer abbrechen, wenn der Benutzer blättert wieder und starten Sie ihn (es mehrmals Brennen zu verhindern.
  4. für die Veranstaltung Brennen Hören und Ihre Bildprüfeinheit dort ausführen.

Hier ist ein Beispiel dafür, wie könnte der Code aussehen:

var scrollIntervalTimeout; 
$(window).on('scroll', function() { 
    // Cancel the timeout and start it again 
    clearTimeout(scrollIntervalTimeout); 
    scrollIntervalTimeout = setTimeout(function() { 
    $(window).trigger('scrollDidEnd'); 
    }, 500); // 500ms delay before firing the event 
}); 

// Listen for the scrollDidEnd event 
$(window).on('scrollDidEnd', function() { 
    // Perform your image check here 
}); 
+0

Meine Funktion nicht zum Laden jedes Mal ausgeführt, wenn meine Funktion zur Überprüfung Benutzer anzeigen, dass: Gibt es ein neues Bild zu laden? Wenn es ist, wird es beginnen, es zu laden.wenn dieses Bild unloaded Bild ist, wird es es einmal laden.Wenn Bild erneut einchecken wird es wieder überprüfen.Ich möchte nur mager, dass es gut ist Überprüfen Sie die Benutzeransicht alle 500 ms. Was ist der Nachteil? –

+0

ok.Ich habe versucht Ihre Funktion, aber es funktioniert nicht für angehängte neue Bilder.Ich will lernen, dass es irgendwelche Nachteile für die Leistung, um Funktion, die nur Blick des Benutzers alle 500 ms zu überprüfen? –

Verwandte Themen