七牛云oss时间戳图片防盗链api接口
作者:Admin采集插件
时间:2023-04-08
浏览:284
分类:php教程
来源:互联网收录
七牛云oss时间戳图片防盗链API接口,生成签名的 url 的时候,也要将新生成的 url 保存到 redis 中,防止每次访问都生成新的签名,即浪费服务器资源,又会增加 CDN 流量。
签名代码:
// Sign 每一个图片生成 2 分钟有效期的签名 // // imgPath 是图片路径,不是完整链接。 func Sign(imgPath string) (string, error) { var ( // 七牛云设置的签名的 Key key = "xxxxxxxxxx" // 过期时间 expire = time.Now().Unix() 60*2 ) rawStr := fmt.Sprintf("%s/%s%x", key, imgPath, expire) hash := md5.New() hash.Write([]byte(rawStr)) sign := fmt.Sprintf("%x", hash.Sum(nil)) var newPath string newPath = fmt.Sprintf("%s?sign=%s&t=%x", imgPath, sign, expire) // 生成签名后放进 redis 中,过期时间比签名过期时间短 1 秒,下次再访问时先从 redis 中查找签名过的链接 err := redis.CacheSignedURL(imgPath, newPath, 60*2-1) if err != nil { return "", err } return newPath, nil }
如果下次访问时没有从 redis 中获取到签名的 url ,再生成新的签名,伪码:
func GetSignedURL(url string) string { cache := redis.GetCacheSignedURL(url) if cache != "" { return cache } return Sign(url) }
这样的好处就是在有效期内服务端返回的图片链接不会改变,浏览器就能够缓存有效期内的图片。
当过有效期时,服务端返回新的签名链接,浏览器就会向七牛 CDN 发出新的请求,进行新一轮的有效期内缓存。
前端从响应 json 中拿到的签名链接渲染页面。
有效期内会在浏览器中缓存:
过了有效期就返回 403:
API
2022-06-15 76API是开发中必备知识点,合理的应用API可以大大节省开发成本,为您整理收集了包含API接口的信息,包含API接口,API代码,API源码,助你更快的学习使用API技术....
- 素颜免费Api网站,共有66个免费API接口 [2023-04-06]
- 随机免费领取QQSVIP会员API接口源码 [2023-01-31]
- 快手短视频去水印API接口源码 [2023-01-15]
- php微信域名拦截检测API源码 [2022-12-01]
- 利用谷歌翻译制作免费伪原创API接口源码 [2022-06-25]
本文章来自互联网,有问题请联系QQ:1739635
免责声明:1.凡本站注明“来源:XXX(非
CMS自动采集助手
)”的作品,均转载自其它媒体,所载的文章、图片、音频视频文件等资料的版权归版权所有人所有,如有侵权,请联系[email protected]
处理;2.凡本站转载内容仅代表作者本人观点,与CMS自动采集助手
无关。