有些访问量大,图片也多的网站,打开时候还是很快..典型的就是淘宝了.
我最近在做一个项目,以后也会有很多图片...
我目前是这样做的,
将业务数据库和图片专门的数据库分开.
在业务表里有一个字段只存放一个图片ID.
图片服务器有3台,在同局域网内,并开了磁盘共享,它们分别是输入服务器,输出服务器,访问服务器.
图片接口有2个,分别放于输入,输出服务器上:
输入接口,就是将用户 上传的图片保存后,将路径之类的信息记录到图片库中,每条记录有一个ID.
每张图片的MD5存放在数据库中,如果新上传的图片MD5相同,则只保存"引用"信息,不重复保存图片,磁盘空间可节省一些.
输出接口,根据一个图片ID和生成的要求(如宽高,是否加水印等)去数据库里找到要生成的图片路径,之后去从输入服务器的磁盘上找原图片,将图片生成之后,放于 访问服务器上,并返回访问服务器上可访问的图片URL.(根据图片ID及生成要求将生成的可访问URL缓存到内存中,下次就不重复处理对应的图片了,直接返回URL)
这样分工明确:
输入服务器主要接收用户上传的原图片,做保存与记录操作.
输入服务器主要按需求生成指定的图片,主要负责加工工作,并返回可访问的URL.
访问服务器就是提供图片读取访问的功能了.
但是这样感觉有点繁琐....
我们来看一下从浏览器发起web请求到看到图片要多少步骤..
1 浏览器请求web服务器.
2 web服务器返回图片ID
3 浏览器用js将图片ID及生成要求 的参数传到输出接口
4 输出接口返回一个可访问的URL
5 浏览器请求URL,显示图片
唉...刚开始觉得自己这个想法还是不错的,后来分析一下感觉好周折啊....
请问大侠们,你们的网站是如何处理大量图片的?
或者你们知道那些大型网站是如何处理图片的,谢谢了!
很多文章讲过这个..楼上就是其中一个
这篇文章说得太笼统了..
CDN加速,效果明显。
把你第三步省掉吧,最好是直接在客户端生成url了,然后请求图片,至于客户端的速度就全看你放图片的服务器的速度了,虽然据说js也会影响速度,但那个不是我们该考虑的了,呵呵。