Причина сохранения ваших изображений вне базы данных, независимо от их размера, не в том, что сам поиск изображений особенно замедляет работу базы данных.Вместо этого это потому, что это заставляет вашу базу данных и веб-приложение выполнять дополнительную, ненужную работу.
Когда пользователь запрашивает изображение, ваше веб-приложение (php или любой другой язык) должно использовать SELECT для получения информации избазы данных, а затем отправить его в браузер пользователя.Это дополнительная работа для веб-приложения и базы данных.Если вы отправите страницу с пятью изображениями, вашему веб-приложению придется обрабатывать шесть запросов из браузера, а не один. Это причина замедления.
Обычно веб-страница с изображениями в браузере выглядит примерно так:
<p>blah blah blah</p>
<div><img src="/images/thumbnails/0045.jpg" width="120" height="120" /></div>
(etc)
Ваше веб-приложение получаетзапрос и собирает и доставляет страницу html.Веб-браузер анализирует страницу, отображает ее и находит все теги <img />
.Затем браузер отправляет еще один запрос в ваше веб-приложение для каждого найденного изображения .Для обработки этих запросов изображений ваше веб-приложение должно обрабатывать отдельный запрос от браузера для каждого изображения.При обработке каждого из этих запросов ваш код должен затем выполнить другой запрос SELECT, получить запрошенное изображение из базы данных и отправить его в браузер.
Итак, SELECT, который вы делаете для доставки страницы, ненужен блоб изображения и не может его использовать.SELECT, которые вы делаете для получения изображений, вероятно, не могут использовать столбцы, содержащие html-контент.
Эти дополнительные запросы к вашему веб-приложению являются проблемой, вызванной хранением изображений в таблице.(Кроме того, большинству систем dbms, включая MySQL, приходится выполнять дополнительную работу по извлечению BLOB-объектов.)
И вашему веб-приложению приходится иметь дело с заголовками для управления кэшированием, типом контента и т. Д.,Это дополнительное бремя программирования и тестирования.
Изображения, даже миниатюры, являются статичными.Веб-серверы, такие как apache и nginx, чрезвычайно оптимизированы для доставки их в браузеры непосредственно из файловой системы вашего сервера.(Серверы отображают в памяти файл, а затем просто записывают эту память в исходящий HTTP-сокет одним вызовом send
.) И, если ваше приложение расширяется, вы можете использовать сеть доставки контента (например, Cloudflare) для доставки статических изображений.быстро для большого числа пользователей.
Вам необходимо управлять изображениями в файловой системе и указать веб-серверу, где их получить.В материале, который вы читали об изображениях и базах данных, есть несколько предложений для этого.
Если на определенных страницах вашего контента есть неизменные миниатюры, вы можете рассмотреть возможность встраивания изображений непосредственно в html страниц.используя URL-адреса данных .