网站前端与服务器数据库的优化
一、 前端优化
1. HTML静态化
2. 前端页面代码级别优化,详细可以参考其他的相关文章,这里讨论有关HTML,javascript,CSS。
3. 图片服务器分离
其主要思路如下:
减少一个页面访问所产生的http连接次数,减少Response流量,减少 DNS 查找,避免重定向 (Avoid Redirects),减少 DOM 元素数量,最小化 iframe 的数 量等等,总之可以在前端做足够的功夫。
二、服务器端优化
1. 缓存
缓存是性能提升的一个主要关注点,读内存的效率比数据库差别不再一个数量级上,缓存目前可选用的组件很多像大家常说的Memcached,而且不同语言都提供了自己的缓存机制。
对于大型网站缓存更是无处不在,客户端缓存、服务器端缓存、分布式缓存,细分又有数据缓存、普通对象缓存、XML缓存、文件缓存、数据库缓存、等等。在大型站点的架构设计中每一层都可以找到缓存的影子,可以说缓存无处不在。当然对缓存的使用也有很多需要注意的地方,不是所有东西都扔到了缓存里,我们设计的时候一定要看缓存的命中率,命中率高的应该一直保留在缓存中。很多缓存组件都对缓存做了分级,一级缓存,二级缓存,这是很好的机制,另外很多缓存算法都是我们在优化的时候可以参考。
2. 负载均衡
负载均衡是所有大中型网站必备的部署,大型网站每天上千万独立IP 的访问量,一个Web服务器根本承担不了,网站后台必需有多台服务器共同工作。较早的负载均衡是DNS负载均衡,原理比较简单。稍微复杂一点的负载均衡,是反向代理,当外部有请求到代理服务器,代理服务器再将该请求均匀的转发到内网的服务器上,现在也有很多硬件产品可以去做负载均衡。镜像是相对比较简单的一些方法,目前采用的相对较多,如今同步更新技术日臻成熟,有很多成熟的解决方案和产品可选。负载均衡是Web站点架构设计需要着重考虑,扩展性在这里得到了良好的体现。
三、数据库端优化
目前虽然NO SQL 势头强劲,但是数据库还是主流。关于数据库优化也有很多种,大型网站都会考虑到分布式,数据库当然也不例外,分布式数据库解决的方法很简单,就是把数据分散在不同的数据库上。目前主要分布存储的方式都是按照一定的方式进行切分,主要是垂直切分(纵向)和水平切分(横向)两种方式。可以从不同方向理解,假设一张表数据较多可以拆分多张表可以说为水平切分,一张表字段较多可以把字段拆分成几张表称之为垂直切分。当然也可以从业务方面去理解:把当前站点不同的业务独立出来存储称为垂直切分,不切分业务,把业务做个一个整体但是按照某种规则分布存储称为水平切分。不管怎么理解其主体思想就是化整为零,以求达到最好的性能。
分布式存储也要考虑负载均衡的问题,目前也有很多相关可以参考的做法,比较常见的有散列方式,或者全局方式,这里都需要仔细考虑到扩容的问题,另外我也需要考虑到分布式存储的缺点,像搜索查询等等,另外也可以结合内存数据库还有一些其他相关的做法从不同方面去优化。
扫一扫,关注我们