七牛C# 能在putfile 后让服务器生成缩略图并返回缩略图地址?

新手上路,请多包涵
var policy = new PutPolicy(bucket, 3600);
string upToken = policy.Token();
PutExtra extra = new PutExtra();
IOClient client = new IOClient();
client.PutFile(upToken, key, fname, extra);
string ret = myqiniuDomain + key + "?imageView/2/w/250";

这样可以直接获得缩略图,但是这样每次访问都会让服务器即使转换吧,如何将缩略图持久化保存并返回保存地址呢?

阅读 3.9k
2 个回答

只有第一次访问缩略图或之前的缓存失效时,是即时生成。生成后会以缓存形式保存在我们的服务器上。
实际由于处理结果缓存 -> cdn缓存 -> 客户端缓存 这样多级缓存存在,并且处理时间相比网络传输时间,基本可以忽略不计,因此不会对访问造成影响。
图片处理不必使用持久化的方案。

图片也可以预处理的,我试过了,不过由于图片的预处理速度很快,callback可能会在notify之后到来。如果不想处理的话,使用直接url访问的方法也行,应该是有缓存的

...
if (IsImage(ext))
{
    put.PersistentOps = "imageMogr2/thumbnail/120x90";
    log.DebugFormat("File {0} is image,using PersistentOps : {1}", file.fname, put.PersistentOps);
    put.PersistentNotifyUrl = request.RequestUri.GetLeftPart(UriPartial.Authority) + "/api/qiniunotify" + append;
    log.DebugFormat("PersistentNotifyUrl : {0}", put.PersistentNotifyUrl);
}
...
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进