Вы можете загружать изображения с помощью вызовов ajax, а в случае использования прокрутки можно прервать вызовы.
В псевдокоде jQuery это было бы что-то подобное (простите меня за ошибки в синтаксисе, это всего лишь пример):
1) пометить изображения, которые вы хотите загрузить
$(".image").each( function(){
if ( is_in_visible_area(this) ) { // check [1] for example
$(this).addClass("load_me");
} else {
$(this).addClass("dont_load");
}
});
2) загрузка изображений
ajax_requests = {};
$(".image.load_me").each( function(){
// load image
var a = $.ajax({
url: 'give_me_photos.php',
data: {img: photo_id},
success: function(html){
photo_by_id(photo_id), img.append(html);
}
});
ajax_requests[photo_id] = a;
});
3) отменить загрузку тех, кто находится вне экрана
for( id in ajax_requests ) {
if ( ! is_in_visible_area(id) ) {
ajax_requests[id].abort();
}
}
Конечно, добавьте также некоторые проверки, если изображение уже загружено (например, класс "загружен")
[1]. Проверить, виден ли элемент после прокрутки
[2]. Прервать Ajax-запросы, используя jQuery