快速提问,在React中使用Baqend SDK,我使用保存在数据库中的对象的id作为名称来保存配置文件图像。
但是为了在上传后在用户浏览器中更新图像,我修改状态并将& updated = true添加到file.url的末尾,因为它是由Baqend回来。
保存图片代码:
uploadLogo(event) {
event.preventDefault();
const name = this.props.match.params.id+"logo";
const file = event.target.files[0];
const img = new db.File({ name: name, data: file, type: 'blob' });
img.upload({force: true}).then((file) => {
db.Companies.load(this.props.match.params.id).then(company => {
this.setState({
logo: file.url+"?updated=true"
});
company.logo = file.url;
return company.update();
},
(error) => {
alert(error);
});
});
}
这是使用React和Baqend SDK的正确方法吗?如果我通过URL加载一堆图像,会对此产生任何副作用:https://remarkable-apple-95.app.baqend.com/v1/file/www/cce9830b-48eb-422e-830d-72ae28571480logo?BCB&updated=true
我想像这样的url参数会被忽略吗?唯一一个要加载图像的人是?updated = true之后是更新徽标的人,并且只在他更新徽标后立即加载。
还有什么?在file.url中添加了BCB?
答案 0 :(得分:1)
到目前为止,您的示例看起来很不错。
但是你根本不应该添加额外的查询参数,因为它们会导致CDN中的缓存未命中。 BCB(Baqend Cache Buster)实际上是您尝试使用?upload = true参数存档的内容。如果先前更改了图像,SDK会自动添加这些缓存破坏程序。 BCB确保从服务器获取新鲜映像,并且仅使用重新验证标头进行缓存,直到旧映像在浏览器缓存中过期。我们的CDN缓存知道这个特殊的缓存存储器并将映像请求重写回原始URL以确保缓存命中CDN。 请注意,如果内容发生更改,我们的CDN缓存会立即失效。
此陈旧性信息也通过Bloom过滤器传播到其他客户端。这可以确保其他客户端不会将图像从本地缓存中取出,因此也可以看到新图像。