若是您的网站存在大量的图片读写操做,咱们建议您使用图片服务器。
经过使用独立的图片服务器,您能够提升网站性能,改善用户体验,并下降运营成本。html
什么是图片服务器
图片服务器是专门为图片读写操做优化的独立服务器。
运行网站的服务器称为 Web 服务器。
经过 Web 服务器,用户能够访问静态网页、Web 应用程序、数据库,或者上传下载图片以及其余多媒体内容。
可是,若是网站访问量不断增长,访问速度日趋缓慢,那么就应该考虑将部分功能从 Web 服务器中分离出来。
一般,若是网站存在大量图片读写操做,那么应该首先把图片服务分离出来,也就是创建独立的图片服务器。java
图片服务器的优点
总得来讲,部署图片服务器有如下几点好处:
一、分担 Web 服务器的 I/O 负载 - 将耗费资源的图片服务分离出来,提升服务器的性能和稳定性
二、可以专门对图片服务器进行优化 - 为图片服务设置有针对性的缓存方案,减小带宽成本,提升访问速度
三、提升网站的可扩展性 - 经过增长图片服务器,提升图片吞吐能力linux
创建图片服务器的注意事项
一、选择适合图片存储的物理介质和文件系统
二、使用物理上独立的服务器
三、若是拥有多台图片服务器,要考虑服务器之间的图片同步问题
四、使用独立域名
五、制定合理的缓存策略
六、使用图片处理模块对用户上传的图片进行再加工nginx
图片云存储服务
若是您正在运营中小型网站,或者是互联网创业团队,那么使用第三方的图片云存储服务能够得到如下好处:
1. 减小图片服务器的部署时间
2. 下降开发成本
3. 节约宝贵的资金
案例:又拍云存储
又拍云是通用的大规模存储服务,主要为用户提供静态文件存储以及 CDN 加速的服务。
又拍云在静态文件存储方面有多年的技术经验,一直专一于静态文件存储处理领域。
又拍云存储在全国各地有 26 个 CDN 节点 , 300 多台服务器以及电信、联通、移动和教育网四线带宽,可以让用户以极低的价格得到可靠、安全和快速的基础存储服务。web
摘自:http://www.thinksaas.cn/group/topic/11664/数据库
图片处理是一个很简单又很复杂 对网站的用户体验举足轻重的一环。apache
说它简单 是由于咱们只须要挂上图片连接就能够了。复杂是由于 当网站图片量大、用户多的时候,对图片的压缩、尺寸控制都会影响网站的流量,也能够说是成本。浏览器
对于图片的接触,是从简单的上传头像图片开始的。缓存
那是一个全部动态加载的图片只有员工头像的小内网,仍是用的ASP.NET的上传控件,传到网站服务器相关目录下,而后用数据库存着文件路径名。tomcat
上传的时候页面一篇雪白,没有上传进度,更没有等待画面,文件大了还有假死现象。
后来系统不断升级,同系统中须要上传图片的模块持续增长,系统用户也大幅增多,图片总量已经达到了300G,虽然也不是很大,但已经不适合再跟网站服务器混在一块儿了,须要作独立图片服务器。同时,服务器也会根据参数决定图片存储(读取)的路径,以及水印的打印。
这个时候的图片服务器更倾向于图片数据接口。
当时的解决方案是写了一个图片存取处理服务。客户端对图片的存取是经过与图片服务进行图片数据传输来完成。其实这个时候的图片服务器的解决方案并很差。
在图片服务器中每张图片只存储了一张图片,即原图。若是须要水印,则经过配置在内存中处理以后返回。这形成了很大的资源浪费。
而且,虽然在②阶段 系统能够很方便的添加用户对图片的请求的权限管理,可是代价就是简单的图片请求,却多了一个图片处理的过程。
好的图片服务器可参考Zimg
摘自:http://www.cnblogs.com/TiestoRay/p/4147331.html
若是你留心的话,能够发现,如今主流的网站都是有单独的图片服务器的,例如,人人网的为rrimg,淘宝的为taobaocdn,下面还有不少的二级域名。
独立的图片服务器有诸多好处,其中一个就是客户端浏览器对一个主机下的链接数量限制,具体的链接数目忘记了,但基本都在10如下。也就是说,浏览器会控制一个站点下的并发请求数量在10如下,若是对于网站有不少样式文件、脚本文件和图片须要加载的话,请求的过程会被阻塞,影响网站的打开速度。
创建图片服务器,将图片资源放在另一个域名下面,会在必定程度上提高网站的打开速度,这样来讲的话是否是说咱们独立的服务器越多越好呢?也不尽然,解析域名并创建链接也须要很长的时间,独立的主机多了的话,也不利于速度的提高。
图片每每会消耗掉网站中的不少宽带和IO资源,独立的图片服务器能够在宽带和IO性能上单独提高,便于管理和拓展。
关于网站性能方面的经验有不少,最为著名的就是雅虎的14条准则。
图片服务器的搭建思路也不难,我大概画了一个图,显示的是我最近两天搭建图片服务器的思路。
网站服务器是Apache + Tomcat, 之前图片的资源所有在tomcat的工程目录下面,随着图片数量的增多,对于图片的管理很不方便,网站的打开速度也不理想。
新的图片服务器用Nginx做为web server,这里有一篇文章分析了lighttpd、apache和nginx的性能,仍是值得一看的。
面临的一个问题就是用户上传图片的问题,由于上传的逻辑仍是在原来的服务器上,所以,怎么同步两个服务器上的图片是个须要解决的问题。
每每网站须要一张图片的多个尺寸来知足不一样的需求,咱们也是不例外的,因此,我想到了将用户上传的源图片保存在网站服务器上,经过源图片来生成不一样尺寸的图片经过ftp的方式保存到图片服务器上,源图片也至关于作了一个备份。
java 操做ftp十分方便,这也是我选择用ftp的方式来同步图片的缘由。
因此,须要在图片服务器上搭建ftp服务,这个教程有不少,再也不罗嗦。不过我想提的一点是,red hat企业版有selinux,貌似是个安全机制,须要关掉这个才能上传。
图片服务器上面搭建了tomcat容器的缘由是网站须要的图片尺寸有将近20种,没有办法保存每一个缩略图,所以用java来实现动态缩放图片的功能,就是相似于 190_h100_w200.jpg 这种格式,长宽随便换。具体的实现方法,有空再写吧。
由于动态生成图片比较耗费资源,所以用在较少访问的页面上,减小了缩略图的个数。