Я использую jquery и backbone.js на сайте, который довольно тяжелый. Основная функциональность сайта включает в себя много довольно небольших изображений (файлы размером 150x180px jpg). Список изображений поступает через ajax/json с использованием коллекции backbone.js. Тогда для каждой модели в коллекции есть представление, которое получает rendered, которое содержит элемент img. Затем представление добавляется в dom.
Существует, в частности, один пользователь, который имеет тысячи изображений - супер-крайний случай относительно того, сколько изображений у большинства наших обычных пользователей. Когда эти данные изображения пользователя загружаются, браузер просто не может обработать загрузку всех изображений, по крайней мере, в том, как работает наш текущий код. Примерно половина изображений загружается в порядке, но браузер (я использую хром 35) перестает отвечать на несколько минут. Другая половина изображений не загружается, а в консоли браузера отображаются ошибки "net:: ERR_INSUFFICIENT_RESOURCES" для изображений, которые не загружаются.
Вот важная часть нашего кода, который загружает изображения. Может ли кто-нибудь дать объяснение по техническим причинам, почему происходит этот отказ при загрузке изображений, и предложить решение , которое не включает добавление пейджинга или "нажмите ее, чтобы загрузить больше" в список изображений?
// inside the view that renders the images
render: function () {
this.collection.each(this.addOne, this);
return this;
},
addOne: function (imgModel) {
var imgView = new App.Views.ImageView({ model: imgModel});
this.$el.append(imgView.render().el);
}
И код render() для представления App.View.ImageView:
render: function () {
var renderedTemplate= theTemplate(this.model.toJSON());
this.$el.html(renderedTemplate);
return this;
}
И шаблон, используемый App.View.ImageView(он скомпилируется только один раз с использованием _.template):
<script type="text/template" id="thumb-template">
<a href="<%= ImageUrl%>"><img src="<%= ImageUrl%>" /></a>
<div class="delete"></div>
</script>