Линейность записи фотки гарантируется сервером, который эту фотку у себя держит.
Ресайз фотки кладётся в кеш, но чтобы его туда положить, нужно сначала с диска прочитать. Если мы ресайзим на лету, то после первого чтения оригинальных 5 мегабайт, они лягут в кеш уровня сервера данных. Ресайзы лягут кеш, который выше ресайзеров. При пустом кеше три размера получаются как одно чтение с диска 5мб + 2 чтения из кеша + 3 ресайза.
В вашем варианте при пустом кеше три размера получаются как 3 чтения с диска.
5 мегабайт поднимается один раз, потом он берётся из кеша. Линейное и рандомное чтение — две большие разницы, прочитать подряд 5 мегабайт проще, чем три раза по 20кб.
Ну смотрите, картинка 5 мегабайт, нарезанные копии по 20кб x 5 штук. Итого в ясную погоду 5 скачков (это ещё без метаданных) по диску. Ежели оставить только 5 мегабайт, то остаётся одно чтение (для нарезки чтения будут из кеша) + cpu. Окружающая ситуация такова, что cpu гораздо дешевле disk seek. Нарезка фотки занимает гораздо меньше времени, чем поднятие фотки с диска.
Ситуация возникает достаточно часто, чтобы делать так, как делается. Мы лениво нарезаем и кладём в быстрый кеш вместо медленного диска. Места не жалко, жалко io.
Люди могут загрузить 100 фотографий и не захотеть выбирать, где у них там по^W лицо, а превьюшки показывать нужно, вот и приходится вставлять разного рода подпорки.
Но вообще предлагать выбрать важные части тела при загрузке правильно, тут не поспоришь.
После нарезки картинка кладётся в кеш, это далеко не «каждый раз нарезать». Если нарезать при заливке, то однажды наступит ситуация, когда нужно будет нарезать ещё один размер для 200 миллионов картинок.
За коммент спасибо, вечером поправлю :)
Ресайз фотки кладётся в кеш, но чтобы его туда положить, нужно сначала с диска прочитать. Если мы ресайзим на лету, то после первого чтения оригинальных 5 мегабайт, они лягут в кеш уровня сервера данных. Ресайзы лягут кеш, который выше ресайзеров. При пустом кеше три размера получаются как одно чтение с диска 5мб + 2 чтения из кеша + 3 ресайза.
В вашем варианте при пустом кеше три размера получаются как 3 чтения с диска.
Операции io дешевле чем cpu? Не путаете с объёмами дисков? :)
Но вообще предлагать выбрать важные части тела при загрузке правильно, тут не поспоришь.
p.s.: s/sll/ssl/g