[当我从graphql服务器删除图像并使用uploader.upload.destroy(public_id)时,它将从cloudinary媒体库(https://cloudinary.com/console/media_library/folders/%2F)中删除
但是图像仍然可用,如果我通过云端端点(https://res.cloudinary.com/db9rcrnuw/image/upload/v1576054005/47122.png)访问它
删除图像时,我也想销毁那些端点。
这里,screen.basePath表示图像的public_Id
const screen = await ctx.prisma
.deleteScreen({
id: args.screenId
})
.$fragment(fragment);
if (scrn.basePath.length === 5) {
console.log(scrn.basePath.length);
cloudinary.uploader.destroy(screen.basePath, function(error, result) {
console.log(result, error);
});
return screen;
}
简短的答案是,这是由以下原因造成的:不使用destroy API调用中的'invalidate'参数,以及URL格式之间的差异(即版本号(v123456789),'v1'或否)版本号),以及使用您的帐户配置为无效发送的格式访问资源。
[要做的第一件事是确保所有destroy
API调用都包括将'invalidate'参数设置为'true',如果您希望CDN无效。
关于URL格式;交付URL的一部分'v1576054005'是一个版本号,实际上是资产上载时间的UNIX时间戳。其主要目的是始终返回最新图像并避免CDN缓存(上传API响应返回具有最新上传版本的URL)。可以在本文中找到有关此主题的更多信息-https://support.cloudinary.com/hc/en-us/articles/202520912-What-are-image-versions。
[请注意,Cloudinary可以在CDN上发送三种可能的URL格式来使它们失效,此处概述如下:https://support.cloudinary.com/hc/en-us/articles/360001208732-What-URL-conventions-are-invalidated
[无效请求会在您使用媒体库UI删除或覆盖图像时,或者在使用SDK / API并提供'invalidate'参数设置为'true'时发送。
默认情况下,所有帐户都会针对SDK生成的默认格式的URL发送无效信息,该格式对您帐户根目录中的资产不使用版本号,对文件夹中的资产使用'v1'占位符(URL中的选项1以上)。
如果使用完整版组件访问映像,那么默认情况下不会发送该映像以作废,以及为什么可能会返回缓存的副本。
在您的情况下,将发送用于无效的URL将没有版本组件(因为资源位于根文件夹中),即https://res.cloudinary.com/db9rcrnuw/image/upload/47122.png
取决于您构建URL的方式,即,如果您使用的是SDK帮助程序方法,请从Upload API响应的url
或secure_url
字段(使用完整版本号)中获取URL,将确定格式,从而确定您的帐户应如何配置为无效。
[我建议您向Cloudinary支持部门发送电子邮件([email protected]),并共享此线程的链接以及有关如何生成所用URL的一些详细信息,以便可以相应地配置您的帐户。