Как отобразить изображения из хранилища данных ndb, используя схему URI данных (через передачу данных в шаблон и без необходимости делать другой запрос)

Я сохраняю миниатюру изображения как свойство blob своего объекта. Я могу нормально обслуживать изображения, как описано здесь: Отображение изображений BLOB-объектов в Python (App Engine)

Однако для этого требуется сделать еще один запрос get и извлечь изображение по id из ndb. Поскольку у меня уже есть исходная сущность, доступная в тот момент, когда я отображаю тег img с соответствующим атрибутом href, существует ли способ визуализации встроенного изображения с использованием схемы URI данных?

Я прочитал документацию по API изображений Google, но, похоже, не существует метода, который бы отображал мое изображение в требуемом формате, чтобы включить его в виде строки. Я также довольно много гуглил, но почему-то все предлагают решение для рендеринга изображений из хранилища данных, как указано выше. На мой взгляд, возможность рендеринга изображений с использованием схемы uri не только сохранит запросы на получение хранилища данных (скорее всего, будет извлечено из memcache, но все же), но, что наиболее важно, спасет посетителей моей страницы в обратном направлении через океан, что ускорит обслуживание страницы довольно значительно.

Большое спасибо за вашу помощь!

1 ответ

Решение

Используйте сервис изображений, и изображения будут обслуживаться высокоскоростным сервисом изображений, который, вероятно, будет ближе к вашим конечным пользователям в любом случае, чем все, что вы могли бы организовать самостоятельно в GAE.

https://developers.google.com/appengine/docs/python/images/functions

get_serving_url(blob_key, size=None, crop=False, secure_url=None)

Возвращает URL, который обслуживает изображение.

Этот формат URL позволяет динамическое изменение размера и обрезки, поэтому вам не нужно хранить изображения разных размеров на сервере. Изображения предоставляются с низкой задержкой из высоко оптимизированной инфраструктуры без файлов cookie.

Это также позволяет избежать повторного попадания в базу данных, поскольку вы сохраняете URL-адрес и предоставляете его пользователю.

Другие вопросы по тегам