2016-08-03 8 views
0

Ich baue einen 360-Grad-Viewer mit Raster-Kacheln (Prospekt), die mehr als 85.000 Bilder pro Ansicht verwendet. net :: ERR_INSUFFICIENT_RESOURCESCaching Bilder mit JS

Also meine Frage ist, gibt es eine Möglichkeit, dies zu vermeiden: Um Betrachters Leistung, ich versuche alle Bilder cachen, aber Web-Browser immer wieder zurückkehren zu verbessern?

Ich verwende setInterval(foo, 1000), um dies zu tun. Etwas wie dieses:

function restImg() { 
    counter = setInterval(ld, 2000); 
} 

function ld() { 
    if (!(nmb >= 80)) { 
     for (var i = 0; i < images.length; i++) { 
      var idx = images[i].indexOf("-"); 
      var path = images[i].substr(0, idx + 1); 
      nmb = parseInt(images[i].substr(idx + 1, 3)); 
      var rest = images[i].substr(idx + 4, images[i].length); 
      nmb++; 
      var img = ""; 
      if (nmb <= 9) { 
       images[i] = path + "00" + nmb + rest; 
       img = new Image(); 
       img.src = images[i]; 
      } else { 
       images[i] = path + "0" + nmb + rest; 
       img = new Image(); 
       img.src = images[i]; 
      } 
     } 
    } else { 
     clearInterval(counter); 
    } 
} 

Vielen Dank für Ihre Hilfe!

+2

Sie versuchen also, 85.000 Bilder beim Laden der Seite zu laden? Versuchen Sie, nur die Bilder zu laden, die tatsächlich auf dem Bildschirm sichtbar sind. Es gibt Hunderte von Plugins, die das für Sie tun können. Dies wird auch verhindern, dass Ihr Server in einem Haufen umfällt, und spart Ihnen eine Menge Geld in der Bandbreite –

+0

Ich versuche, alle diese Bilder vorab zu laden, weil der Betrachter eine sehr langsame oder schlechte Leistung beim Zoomen oder Drehen hat. Deshalb habe ich beschlossen, dies zu tun. Es funktioniert gut auf lokalen Server, aber nicht auf Remote. Wenn ich nur sichtbare Bilder lade, verzögern die nächsten Bilder beim Laden den Betrachter sehr. Kannst du mir den Namen eines dieser Plugins nennen? – victoradv

+2

@victoradv, ist Ihnen bewusst, dass ein geladenes Bild mindestens Breite * Höhe * 4 Bytes Speicher verbraucht; unabhängig vom Format oder der Dateigröße. Selbst wenn Ihre 85000 Bilder nur 10x10 Pixel groß sind, verbrauchen sie bereits 32 MB. Laden Sie nicht alle Bilder vor, laden Sie die Bilder hoch, die am wahrscheinlichsten als nächstes benötigt werden. 2. behalte keine Referenzen auf die Image-Knoten. Laden Sie die Bilder und verlassen Sie sich auf den Browser-Cache. – Thomas

Antwort

0

Um Bilder zwischenzuspeichern und zu laden, ist der Stand der Technik Service Workers. Dies ermöglicht Ihnen eine fein abgestimmte Kontrolle über den Cache des Browsers, ohne dass Sie sich auf per-Seite-Javascript verlassen müssen.