Ответ 1
Изображения, поданные с BlobStore, имеют несколько преимуществ перед хранилищем данных:
-
Изображения подаются непосредственно из BlobStore, поэтому запрос не проходит через экземпляр интерфейса GAE. Таким образом, вы сохраняете время на интерфейсе и, следовательно, стоите.
-
Стоимость хранилища BlobStore составляет примерно половину стоимости хранилища данных ($ 0,13 против $0,24). С Datastore вы дополнительно платите за get() или query().
-
BlobStore автоматически использует службу кеша Google, поэтому единственной ценой является стоимость полосы пропускания ($ 0,12/ГБ). Вы также можете установить это на экземпляре frontend с помощью управления кешем, но разница в том, что это делается автоматически для BlobStore.
-
Изображения в BlobStore могут быть отправлены через ImageService и могут быть преобразованы на лету, например. создание эскизов. Преобразованные изображения также автоматически кэшируются.
-
Двоичные капли в хранилище данных ограничены размером 1 Мб.
Один из недостатков BlobStore заключается в том, что он не имеет элементов управления доступом. Любой, у кого есть URL-адрес, может загрузить его. Если вам нужен ACL (список контроля доступа), посмотрите Google Cloud Storage.
Update:
Разумеется, самая большая экономия будет зависеть от правильного кэширования изображений:
- Каждое изображение должно иметь постоянный URL.
-
Каждый URL изображения должен быть отправлен с правильными заголовками HTTP-заголовков кеша:
// 32M seconds is a bit more than one year Cache-Control: max-age=32000000, must-revalidate
вы можете сделать это в java через:
httpResponse.setHeader("Cache-Control", "max-age=32000000, must-revalidate");
Обновление 2:
Как правильно указывает Дэн в комментариях, данные BlobStore подаются через внешний интерфейс, поэтому элементы управления доступом могут быть реализованы с помощью кода пользователя.