闲谈 Web 图片服务器应用分析

时间:2021-05-19

就自己的一点理解,抛砖引玉,以期能引出更具价值的信息。

事关图片的存储
把图片存储到什么介质上?如果有足够的资金购买专用的图片服务器硬件或者NAS设备,那么简单的很;如果有能力自己开发单独存储图片的文件系统,那么也不用接着往下看了。

如果上述条件不具备,只想在普通的硬盘上存储,首先还是要考虑一下物理硬盘的实际处理能力。是7200转的还是15000转的,实际表现差别就很大。是选择ReiserFS还是Ext3,怎么也要测试一下吧?创建文件系统的时候Inode问题也要加以考虑,选择合适大小的inodesize,在空间和速度上做取舍,同时防患于未然,注意单个文件系统下文件个数别达到极限。

独立,独立的服务器
无论从管理上,还是从性能上看,只要有可能,尽量部署独立的图片服务器。这几乎成为常识了(不过在我做过面向Web的项目之前就这个问题也被人笑话过)。具备独立的图片服务器或者服务器集群后,在Web服务器上就可以有针对性的进行配置优化。比如采用传说中更有效率的Lighttpd。

如果不想在几台机器间同步所有图片,只用NFS模式共享一下即可。注意软、硬连接可能带来的问题,以及NFS特定的传输速度。

独立,独立的域名
如果大部分Web页面必须要载入很多图片,那么需要注意IE浏览器的连接数问题(参见对该问题的测试)。

前几天有个朋友在线上问我,"一些大网站,图片服务器为什么都用另外一个域名?比如yahoo.com图片服务器用了yimg.com的域名?",粗糙一点的答案:除了管理方便,便于CDN同步处理,上面说的IE连接数限制也是个考虑因素吧(其他原因我也不知,有请Yahoo!的同学发言)【还有一个我没考虑到的是Cookie的因素,参加楼下高春辉的留言】

雅虎Web优化14条
关于雅虎YSlow工具倡导的优化14条规则,建议每个Web维护人员必须倒背如流,当然也应该辩证来看--介绍这14条规则的页面本身也只能得到70多分...其中的第九条和上面说的独立域名之间多少有些矛盾。实际情况要根据自己的Benchmark与具体需求而确定了。

有效利用客户端Cache
很多网站的UI设计人员为了达到某些视觉效果,会在一些用户需要频繁访问的页面模块上应用大量的图片。这样的情况,研究表明,对于用户粘度比较高的站点,在Web服务器上对这一类对象设置ExpiresHeader就是十分有必要的,大量带宽就这么节省下来,费用也节省了下来。顺便说一下,对于验证码这样的东西,要加个简单的规则过滤掉。

服务器端的Cache
在国内,CDN也是有钱才能玩得起。而类似AmazonS3这样的一揽子存储服务,国内还没有出现。所以,充分利用服务器端的Cache也是有必要的。Squid作为反向代理服务器,缓冲图片效果应该说尚可,新浪技术团队贡献的Ncache据评测,效果更佳。

高解析图片问题
如果网站存在大量高解析度的图片,那么有必要考虑部署IIPImage或者类似的软件。

运营问题
很多比较有规模的网站对于用户上传的图片不做任何处理,结果页面上还能看到很多BMP格式的图片(个人觉得任何网站出现BMP格式的图片都是可耻的)...这完全是运营上的策略之误了。找个程序员投入一点时间写个图片处理模块,对那些"截屏"得来的图片做个转换,投入成本可能远比存储上的开销小,而用户再访问该图片,质量未必能有什么损失,浏览速度无疑好多了。哪种处理方式更让人接受,不言而喻。

声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。

相关文章