Joe*_*rne 26 google-app-engine blobstore google-cloud-datastore
我有一个应用程序,其中每个特定类型的DataStore实体可以有许多与之关联的照片.(想象一下汽车销售网站 - 一辆车有多张照片)
最初由于所有数据都来自其他网站,我只能将照片存储为DataStore Blob,但现在可以以编程方式编写BlobStore项目,我想知道是否应该更改我的设计并存储照片作为BlobStore项目?
所以,问题是:
将照片存储在Blobstore中,或者作为Blob存储在数据存储区中"更好"吗?两者都是可能的解决方案,但这将是更好/更便宜/最有效的方法,为什么?
Pet*_*ego 46
从BlobStore提供的图像比Datastore有几个优点:
图像直接从BlobStore提供,因此请求不会通过GAE前端实例.所以你节省了前端实例的时间,从而节省了成本.
BlobStore存储成本大约是数据存储存储成本的一半(0.13美元对0.24美元).使用数据存储区,您还需要为get()或query()付费.
BlobStore自动使用Google缓存服务,因此唯一的成本是带宽成本(0.12美元/ GB).您也可以通过缓存控制在前端实例上设置它,但区别在于这是为BlobStore自动完成的.
BlobStore中的图像可以通过ImageService提供,并且可以即时转换,例如创建缩略图.转换后的图像也会自动缓存.
数据存储区中的二进制blob大小限制为1Mb.
BlobStore的一个缺点是它没有访问控制.任何拥有blob URL的人都可以下载它.如果您需要ACL(访问控制列表),请查看Google云端存储.
更新:
成本方面,最大的节省将来自正确缓存图像:
应为每个图像URL提供适当的缓存控制HTTP标头:
// 32M seconds is a bit more than one year
Cache-Control: max-age=32000000, must-revalidate
Run Code Online (Sandbox Code Playgroud)你可以在java中做到这一点:
httpResponse.setHeader("Cache-Control", "max-age=32000000, must-revalidate");
Run Code Online (Sandbox Code Playgroud)
更新2:
正如Dan在评论中正确指出的那样,BlobStore数据是通过前端实例提供的,因此访问控制可以通过用户代码实现.
| 归档时间: |
|
| 查看次数: |
9561 次 |
| 最近记录: |