2016-07-19 5 views
0

Ich benutze jQuery, um ein Hintergrundbild jede Sekunde zu ändern. Das funktioniert, wie ich will, aber wenn ich auf die Registerkarte NETWORK in Google Chrome schaue, sehe ich, dass eine neue GET-Anfrage für das Bild jede Sekunde gemacht wird, was offensichtlich sehr unwirtschaftlich ist. Kann mir jemand einen besseren Ansatz raten hier einzunehmen. Ich habe in anderen Beiträgen gelesen, dass die Bilder zwischengespeichert werden sollten und dass der Browser wissen sollte, dass er keine Anfrage an den Server stellt, aber soweit ich das beurteilen kann, macht der Browser immer noch die Anfrage.Bild ändern jQuery ohne eine neue Anfrage an den Server

Bitte beachten Sie den aktuellen Code unten.

var x = 0, 
homepageImages = ["1","2","3","4"]; 

setInterval(function(){ 
    x++; 
    if(x === 4){ 
    x = 0; 
    } 
    $('.desktop-main-img').attr('src', 'img' + homepageImages[x] + '.jpg'); 
}, 1000); 
+0

@Pete Ja, ich denke, dass, wie die Straße scheint i nehmen müssen! –

Antwort

1

Sie möchten die Bilder dann vorab laden.

var x = 0, 
homepageImages = ["1", "2", "3", "4"]; 

// invisible preload the images 
for(var i = 0; i < homepageImages.length; i++) 
    $(new Image()).src('img' + homepageImages[i] + '.jpg'); 

setInterval(function() { 
    x = ++x === 4 ? 0 : x; 
    $('.desktop-main-img').attr('src', 'img' + homepageImages[x] + '.jpg'); 
}, 1000); 

Denken Sie jedoch daran, dass auf der Netzwerkregisterkarte eine Abrufanforderung für die Bilder angezeigt werden kann. Aber Sie sollten sehen, dass die Antwort zwischengespeichert wird. Der Server teilt Ihrem Browser mit, dass sich das Bild nicht geändert hat/er kennt das Bild bereits und überträgt keine Daten.

+1

und wird dies nicht passieren, wie mein Code bereits funktioniert? Warum ändert das Hinzufügen der ersten Schleife irgendetwas? –

+0

Sicher, dein Code tut es. Ich dachte, dass Sie das Bild vorladen möchten, wegen des Flackerns, wenn die Bilder im Wechsel geladen werden. Mit der Schleife oben, haben Sie keine weitere Ladung innerhalb Ihres Intervalls und Ihre Bilder sind dann bereits chached ... – eisbehr

0

müssen Sie alle Bilder in Körper Vorspannung vor, dass die Schleife laufen

Verwandte Themen