@Lasqez

Как правильно вывести изображение?

Собственно вопрос простой. Как сделать правильный вывод картинок в цикле?
В интернете есть очень много инфы по данному вопросу, но хотелось бы сделать все максимально правильно с уклоном на производительность.
В общем есть несколько категории товаров. При клике на категорию выводятся товары из базы в цикле (название, код товара, цена и картинка). В силу того что товара много - не везде есть картинка, для таких случаев есть картинка-заглушка no_img.jpg
Пока еще не сделал постраничную навигацию и выгружаются все товары (по 70-80 штук) что заметно влияет на подгрузку картинок и страницы в целом.
Теперь к коду, код вывода товара:
код
<? while($row = mysql_fetch_assoc($result3)): ?>

 <div class='product'>
	<div class='product'><a href='product.php?id=<?= $row['Code']; ?> '><img typeof='foaf:Image' src="<? echo plugins_url( 'img/product_img/' . $row['Code'] . '.jpg' , dirname(__FILE__) ); ?>" onError="this.src='<? echo plugins_url( 'img/product_img/no_photo.gif' , dirname(__FILE__) ); ?>'" width='120' height='120' alt='' /></a></div>
	<div class='product-title'>
		<a href='product.php?id=<?= $row['Code']; ?> '><?= $row['Name']; ?> </a>
	</div>
	
	
	<div class='product-articul'>Код товара: <?= $row['Code']; ?> </div>


	<div class='product-price'><?= $row['PriceShop']; ?> руб</div>

	</div>
    <?= $row['data']; ?>

<? endwhile; ?>

Как видно сейчас используется проверка, если есть в папке картинка с соответствующим кодом, то вывести ее, если нет, то вывести заглушку:
spoiler
<? echo plugins_url( 'img/product_img/' . $row['Code'] . '.jpg' , dirname(__FILE__) ); ?>" onError="this.src='<? echo plugins_url( 'img/product_img/no_photo.gif' , dirname(__FILE__) ); ?>'

Насколько это правильный метод?

Картинки хранятся в папке, название соответствует id товара. Удобно просто, переименовать картинку и кинуть в папку, либо же есть загрузчик на сайте.

Мысль была следующая, при загрузке картинки через сайт, добавлять ее путь в базу данных и делать проверку уже с базой данных при выводе. Либо же вообще загружать картинки в базу, чего как я понял не советуют делать.

Как будет правильно это все реализовать?
  • Вопрос задан
  • 88 просмотров
Решения вопроса 1
webinar
@webinar Куратор тега PHP
Учим yii: https://youtu.be/-WRMlGHLgRg
подгрузка происходит в клиенте, html формируется на сервере. Никакой связи. У Вас долго грузится по 2 причинам:
1. это wp, он не летает
2. много картинок, каждая - это отдельный запрос на сервер.
Что делать: ну про wp промолчу, в остальном нужно оптимизировать размер картинок, если пагинации нет и там товар кучей. то сделать асинхронную подгрузку. Грузить все нофото, а потом в js загружать фотки вместо заглушки. Например:
<img src="/image/nophoto.png" data-img="/image/product/some_photo.jpg">

Соответственно дожидаемся загрузки страницы, и постепенно заменяем src на data-img. Если пойти дальше и делать оптимизацию под разные размеры дисплея, то есть замечательный тег:
<picture>
 <source srcset="mdn-logo-wide.png" media="(min-width: 600px)">
 <img src="mdn-logo-narrow.png" alt="MDN">
</picture>

Но можно и первым методом этого добиться. Если в data-img хранить просто имя картинки или даже id товара и формировать url к нужному размеру в js.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
flapflapjack
@flapflapjack
на треть я прав
охоспаде) вот у людей проблемы) да нормально все. Есть проверка на существование файла - и ок. Тем более у вас на стороне пользователя проверка идет. Нагруза на сервер меньше.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
Бюро Цифровых Технологий Санкт-Петербург
от 120 000 до 180 000 ₽
04 мая 2024, в 06:10
4000 руб./за проект
04 мая 2024, в 05:49
10000 руб./за проект
04 мая 2024, в 03:57
10000 руб./за проект