欢迎来到Doc100.Net免费学习资源知识分享平台!
您的位置:首页 > 程序异常 >

——图片服务器的搭建

更新时间: 2014-01-05 01:58:07 责任编辑: Author_N1

 

求助——图片服务器的搭建
大家有什么比较好的方案,搭建图片服务器,能够将图片文件从web服务器上分离出来,单独存储一个或多个服务器上

看到别人ftp异步传送的方案,就是将原本服务器上的图片转移到另个服务器,然后图片使用二级域名,访问另一个服务器;

这个方案有几个缺陷
1 图片文件被写入两次
2 图片的访问权限控制,以及删除会比较麻烦
3 实时性不好

优点:
1 基本不需要做什么,配置一下ftp就可以
2 对于原web项目基本透明,不需要改什么
3 实现简单

但是我现在的需求是
1 图片服务器上的图片也能够控制访问,比如用户访问权限等
2 图片能够删除
3 实时性好
4 对原有web项目透明
5 拓展性好
6 效率高

从图片服务器角度有两种方案可以考虑;
应用动态服务器技术比如说jsp php 
纯静态技术

困难主要在于要考虑到有访问权限的控制,我想可能要用动态web技术,有一点点思路,但是心里总是隐隐的觉得这样有点不妥;
判断访问权限,则要判断请求用户,则要记录登陆状态,用户信息,得到session;如果图片服务器和web服务器能够session共享那样是好的,但是如果一个是java项目一个是php项目....这样的话拓展性恐怕会成问题,耦合太多;

http://zhidao.baidu.com/link?url=cyRnhmg6meZjfkiGpW4ZyXVrWXTvIhFp8_vpVVYqDHxwai73Ce60ATbqWK_IoGfq-87HDZutTa41OKXcsDUb6q
可行性好像是有的,但是怕自己走了歪路


这方面自己是第一次做,没有什么经验,所以想听听大家,有没有成熟的方案;因为图片服务器也不是什么新技术新概念;


自己也去找了一些资料,但是找到的都是人家的方案,需求和我不一样
比如说这个http://blog.csdn.net/iinel/article/details/4669448
淘宝的图片都是给客户看的,好像没有私有的图片,如果是这样确实是可以的一个lighttpd就可以搞定
又比如这个,就是前文所提ftp方案的http://houxiyang.com/archives/23/
还有更多的
http://blog.sina.com.cn/s/blog_5611597901014o8m.html
http://www.alongsky.com/?p=811
http://cnodejs.org/topic/4f7b17c38a04d82a3d763dab
http://www.ablanxue.com/prone_10800_1.html

经过试验,人人网,没有对图片的访问权限做控制,即便图片是私密相册中的,只要你有图片的链接地址;
但是百度做了,不过是用连接有效时间做的,超过了有效时间提示没有权限,不错的方式;在有效时间内不同的浏览器(没有登陆限制,注销登陆,清除浏览器cookie)都可以访问;
下面这个已经过期了(不明白的是,有效时间是编码写在url里还是服务器session过期,有兴趣的朋友可以实验一下,假设是服务器session过期的话,你用chrome浏览器登陆后然后进入非私密相册,复制一个图片地址,不断操作,然后用另一个款浏览器访问复制的链接,假设通过chrome的不断访问可以延长在另一个浏览器中的访问的时间限制,那么应该就是这个方案了,如果不是这样的,那么是一个固定的时间,我想要么固定时间写在url里要么存在服务器上)
http://b.hiphotos.bdimg.com/album/s%3D740%3Bq%3D90/sign=e8ba7d98b31bb0518b24b12c0641ab89/2e2eb9389b504fc294afc1bfe5dde71191ef6d93.jpg
连接地址是动态的,其中包含一个令牌,每次都不一样sign后的,估计是sessionID什么的
http://h.hiphotos.bdimg.com/album/s%3D1100%3Bq%3D90/sign=5e8e7770828ba61edbeecc2e7104ac7b/09fa513d269759eed2d61171b2fb43166c22df82.jpg
http://h.hiphotos.bdimg.com/album/s%3D740%3Bq%3D90/sign=78b174c4251f95caa2f590b2f92c0e03/09fa513d269759eed2d61171b2fb43166c22df82.jpg
上面两个是同一张图片
如果把相册改成私有的,那么上面图片的连接地址就变成了
http://priv.hiphotos.baidu.com/album/s%3D1100%3Bq%3D90/sign=5e8e7770828ba61edbeecc2e7104ac7b/09fa513d269759eed2d61171b2fb43166c22df82.jpg?psign=f08badaeb899a9017d4189071dbcc51a02087bf408d1d5e0

这样换个浏览器就不能访问了(有登陆验证cookies或者在图片服务器上注册了session)
换了个域名,估计是不同的虚拟服务器了,这个服务器有访问权限验证;但我想,图片应该还是在相同的物理服务器上(百度个人空间的个人相册不是公共的应用,没有大量的并发访问,没有必要存储多份做分布式),只是入口不一样了,猜测;因为,将图片设置为私密,之前在非私密状态下保存的相同图片的URL在过期前依然可用;

百度技术比人人好呀;不知道他们怎么做的,不过因该是使用了不同的方案对待私密图片和非私密图片;

要是能够做成像百度这样就足够好了,虽然不知道百度怎么做的,但是可以大概猜测一下:
非私密相册
1 图片服务器上以这个域名h.hiphotos.bdimg.com作为虚拟服务器的入口
2 图片服务器和百度空间服务器共享session 使用squid等等共享session的方法;
3 虚拟服务器h.hiphotos.bdimg.com 接受到访问请求时,通过路由(php)或者过滤器(jsp)来提取url中的令牌,可能是sessionID,或者是编码后的,然后查找是否存在此session;存在则返回图片;不存在则返回统一的错误图片“您访问的图片是私有的”
上一篇:上一篇
下一篇:下一篇

 

随机推荐程序问答结果

 

 

如对文章有任何疑问请提交到问题反馈,或者您对内容不满意,请您反馈给我们DOC100.NET论坛发贴求解。
DOC100.NET资源网,机器学习分类整理更新日期::2014-01-05 01:58:07
如需转载,请注明文章出处和来源网址:http://www.doc100.net/bugs/t/3806/
本文WWW.DOC100.NET DOC100.NET版权所有。