Один из способов улучшить загрузку страницы – указать размер изображения (ширина hieght). В PHP это можно сделать с помощью getimagesize (), однако я могу себе представить, что это будет довольно медленно выполнить, если у вас много изображений.
Каков наилучший способ динамически получать размеры изображений многих изображений с минимальным воздействием на загрузку страницы. Мы говорим о 50 + изображениях.
Я только что проверил с 55 ПК с изображениями более 5 МБ:
Imagemagick's getImageGeometry заняла 5.3 seconds
(потому что после каждого файла вам нужно воссоздать объект imagick), а getimagesize – через 0.032 seconds
. Последнее более чем приемлемо.
Если нет, сохраните размеры в базе данных.
EDIT: Кроме того, если вы получаете файлы через TCPIP, это значительно замедляет процесс. Итак, если вы так называете:
getimagesize('http://img.ruphp.com/optimization/pic.jpg');
Вместо
getimagesize('localdir/hereiam/pic.jpg');
вы получаете некоторые сетевые издержки.
Кроме того, если эти изображения постоянно имеют данные EXIF (сделанные с помощью цифровой камеры), то вы можете использовать PHP exif_, например: exif_read_data.
Вопрос: какую версию PHP вы используете? Предыдущие версии 4.x имели меньшие проблемы в отношении getimagesize для определенных файловых систем.
Да, getimagesize()
может быть медленным, особенно на больших изображениях, и он также зависит от сервера. Если у вас большая коллекция изображений, и вы хотите показать разрешение каждого изображения на странице, я бы, вероятно, использовал для этого базу данных. Всякий раз, когда изображение загружается или изменяется, используется getimagesize()
.
Это также позволит создать более универсальную коллекцию изображений, поскольку вы можете использовать операторы SQL для группировки фотографий, как вам нравится. Например, «показывать фотографии с сегодняшнего дня», «показывать фотографии с прошлой недели» и так далее.
Если ваша коллекция невелика, а база данных изображений не является вариантом, вы должны сначала попробовать, как ваш сайт работает с простым getimagesize()
.
Я полагаю, вы не говорите о значках и проектных изображениях, скорее говорите о динамических изображениях, загружаемых на сервер пользователями и редакторами.
Если это так, я бы изменил размер загруженных изображений при их загрузке и всегда знал их размер
самый быстрый способ узнать размер изображения