2016-08-03 6 views
0

Я создаю 360-градусный просмотрщик, используя растровые фрагменты (листовки), в которых используется более 85 000 изображений для каждого вида. Для повышения производительности зрителя, я пытаюсь кэшировать все изображения, но WebBrowser всегда возвращается: сети :: ERR_INSUFFICIENT_RESOURCESКэширование изображений с помощью JS

Так что мой вопрос, есть ли способ избежать этого?

Я использую setInterval(foo, 1000) для этого. Что-то вроде этого:

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); 
    } 
} 

Большое спасибо за вашу помощь!

+2

Значит, вы пытаетесь загрузить 85 000 изображений при загрузке страницы? 0.o Попробуйте ленивую загрузку только изображений, которые на самом деле видны на экране. Есть сотни плагинов, которые могут сделать это для вас. Это также остановит ваш сервер, упавший в кучу, и сэкономит вам * много денег в полосе пропускания. –

+0

Я пытаюсь предварительно загрузить все эти изображения, потому что зритель имеет очень низкую или низкую производительность при масштабировании или вращении. Вот почему я решил это сделать. Он отлично работает на локальном сервере, но не удален. Если я загружаю только видимые изображения, следующие изображения при загрузке задерживают зрителя. Не могли бы вы назвать имя любого из этих плагинов? – victoradv

+2

@victoradv, знаете ли вы, что загруженное изображение потребляет не менее ширины * высоты * 4 байта памяти; независимо от формата или размера файла. Так что даже если ваши 85000 изображений имеют размер 10x10 пикселей, они уже потребляют 32 МБ. Не предварительно загружайте все изображения, предварительно загрузите их, которые, скорее всего, понадобятся в следующий раз. Второй. не сохраняйте ссылки на Image-узлы. Загружайте изображения и полагайтесь на кеш-браузер. – Thomas

ответ

0

Для того, чтобы кэшировать и обрабатывать изображения с ленивым изображением, уровень техники Service Workers. Это позволит вам иметь мелкозернистый контроль над кешем браузера, не полагаясь на javascript на странице.

Смежные вопросы