I think you should just load the images asynchronously, more than dealing with such an optimization. As you ask, yes, this is the normal way to do that, unless your server has really huge traffic (huge = google.com, facebook.com, etc.).
I use the SDWebImage open source library and it works really well, making it transparent to you. After importing it, for each cell, you should do:
[cell.myImageView setImageWithURL:[NSURL URLWithString:imageURL] placeholderImage:[UIImage imageNamed:@"MyPlaceholderImage"]];
and it will try to load (and cache) dynamically each image, placing a placeholder image while it's loading.
I use it in a table with 100+ rows and it works like a charm.
Hope this helps!