2015-07-10 64 views
0

我正在express.js上构建一个网站,我想知道在哪里存储图像。某些“静态”网站信息(如团队页面)将由数据库支持。如果新的团队成员加入,我们会将新数据推送到CouchDB,并在网站上显示新的团队页面。如何获取图像到客户端?

团队页面将包含一个配置文件图片,该图片将与其他数据一起存储在CouchDB中。

我应该通过网络服务器发送图像还是发送引用到图像的位置,并让客户机从数据库抓取图像,因为CouchDB本身就是HTTP服务器?

回答

1

我不是Couch DB的专家,但这里是我的2美分。一般来说,为每个图像打DB,会增加负载。如果网站将被许多人访问,那将是很多。

理想的方式是与CDN一起提供服务,并让CDN服务器指向您的资源服务器/网络服务器。

+0

所以,这会很好,但我通过SSL提供了我所有网站的内容。当我的CDN尝试通过CNAME提供我的网站图片但没有我的SSL证书时,我得到“不可信任的一方”错误;正确如此。 – Costa

1

您可以将配置文件图片(以及任何其他文件)作为附件存储到文档中。负载与其他网络服务器相同。

文档:

CouchDB的管理的附件以及对文档或视图中的ETag。已经缓存了图片的客户已经获得了每个相同请求的轻量级304响应。您可以使用我的基于CouchDB的博客lbl.io进行试用。打开您最喜爱的浏览器开发人员栏并在多次刷新过程中观察图像请求。提示1:如果您有inline-attachment-upload(文档中编码的Base64,1个创建带附件的文档请求)或上载附件(原始内容类型中的多部分/相关)之间的选择, 2请求创建一个附件的文档或1个请求在文档已经存在时创建附件)....然后选择第二个。由CouchDB处理更高效。

提示2:你可以configure CouchDB to handle gzip compression by the content-type的附件。它减少了很多负担。

+0

1)SSL怎么样?我的整个网站都通过SSL提供服务。 – Costa

+0

2)我的CouchDB不公开,它有一个用户名和密码。客户端无法直接从CouchDB访问映像(至少不能使用基本身份验证),因为我会在src属性中公开我的数据库名称和密码。 – Costa

+1

A 1)所有声明均适用于通过SSL的请求。我建议在CouchDB之前使用HAproxy来启用SSL(CouchDBs SSL配置可能很难配置为A级安全服务器)。 –

1

我刚刚倾倒的化身在/web/images/avatars,文件名只存储在CouchDB中,并成为与express.static()

你当然可以使用CouchDB的附件

的文件夹,您也可以创建一个Amazon S3存储和保存您的用户对象上的绝对https路径

+0

我想为用户图片使用S3,所以这很有帮助,但我关注将S3网址放入我的图片src属性中的搜索引擎优化问题。那些你认为不成立的人? – Costa

+0

另外,S3仍然使用SHA1,它给浏览器警告,uggh。 – Costa

+0

*灯泡点击* – Plato