在没有用第三方储存时,我们项目的图片上传做了一个表,如上图,用在图片上传模型的地方可以做到图片去重,url
列保存的是图片的地址Uploads/Pic/2016-06-15/5760a0ed1d994.png
,而实际上访问地址是 www.xxx.com/Uploads/Pic/2016-06-15/5760a0ed1d994.png
这个地址可以拆分为:Uploads/Pic/
和 2016-06-15/
和 5760a0ed1d994.png
即:服务器相对目录
, 动态目录
, 动态文件名
我们所有的图片上传都用了这个上传模型,上传去重后感觉比较高效,我们商品主图直接放的是这个表的id
,一直以来这个设计感觉还行,可是现在问题来了:
1:首先URL
这里所有的图片放在网站访问目录下面,这对于有的版权保护图片来说就不合适了。
2:我们现在是单台服务器,这个url
读出来后前面加个网址或者web
访问根目录“/”
就可以了,但是如果有多台服务器那么就不好办了。(明显这种设计有问题,只是一开始没意识到)
3:如果此时我们用了第三方图片储存的话,那么之前的商品主图用这个图片表的id
这种设计岂不是就土崩瓦解了,如果我们用第三方后,那么商品表的主图字段存的是什么呢,是七牛的图片访问地址吗?
补充:
https://fuss10.elemecdn.com/e...
看到这个地址,我发现问题二似乎有救,那就是在抽一层“目录”出来——https://fuss10.elemecdn.com/
(主机目录/资源目录
),哎,也只是突然想到,没有思路,这样的话如果主机变动的话也完蛋了,想的脑壳疼了。
我甚至还想给这个表加上图片尺寸,大小的字段,exif信息字段,不知道可不可以。
希望有经验的大神给我点思路,谢谢了^_^
版权保护,这块指的是?防盗链么?还是防下载什么的。七牛无论是防盗链还是token的下载权限验证什么的都支持的。应该是可以满足你这个需求
你都发在七牛这边了,所以根本不需要考虑这个问题。一个图片域名搞定所有。程序的配置里面写好这个域名就好了。
七牛有个Etag的,也有明确的算法,可以用于去重,每张图有唯一的Etag,你可以用这个当你原来的ID存。
补充~~你写的都是相对路径,所以不要担心换主机什么的。用第三方,域名区别就行了。
如果你想自建,那可以利用一致性Hash等方案去做主机区分。。当然。这个架构你可以参考淘宝的。比较完善