Как отобразить изображения из хранилища данных 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-адрес и предоставляете его пользователю.