Я конвертирую свой сайт в использование blobstore для обслуживания изображений, и у меня есть проблема. У меня есть страница с большим количеством изображений, которые визуализируются динамически (через jinja), и единственными доступными данными являются ключи сущности, которые указывают на объекты изображений, которые содержат соответствующий обслуживающий URL.Изображение, поданное из высокопроизводительного blobstore без прямого доступа к get_serving_url()
Раньше каждое изображение было URL вдоль линий "/show-image?key={{image_key}}"
, что указывает на обработчик запроса по линии этого:
def get(self):
imageInfo = db.get(self.request.args.get("key"))
imagedata = imageInfo.data // the image is stored as a blob in the normal datastore
response = Response()
response.data = imagedata
response.headers['Content-Type'] = imageInfo.type
return response
Мой вопрос: Как я могу изменить это так, что, вместо того, чтобы вернуться ответ с imageInfo.data
, я возвращаю ответ с imageInfo.saved_serving_url
(сгенерированный с get_serving_url
, когда объект изображения был создан). Что еще более важно, это даже хорошая идея? Кажется, что преобразование saved_serving_url
обратно в данные (например, с использованием urllib.fetch
) может просто противодействовать скорости и эффективности использования высокоскоростного хранилища данных в первую очередь?
Возможно, мне нужно просто переписать мой код, чтобы шаблон jinja имел прямой доступ к обслуживающим URL-адресам каждого изображения. Но в идеале я бы хотел избежать этого из-за количества параллельных списков, которые мне пришлось бы пройти.
Выбирать URL-адрес самостоятельно и возвращать содержимое будет медленнее, чем просто выполнять функцию blob up. И переадресация на обслуживающий URL также приведет к тому, что вы потеряете все преимущества использования API для обслуживания изображений. Использование URL-адресов, отображающих изображение, является единственным способом получить улучшения, предоставляемые API. –