网站服务端性能优化三部曲

来源:互联网 发布:数据库测试用例怎么写 编辑:程序博客网 时间:2024/04/30 09:25

由于今年年初一个大项目,对系统的架构做了相当大的调整。系统的可装修性大大提高,页面的个性化组织更加灵活,包括页面上各个功能模块的公用性也大大增加。在提供给用户更为优质的装修服务的同时,也遇到了另外一个问题。系统的性能相比之前较为简单集中地系统一定程度上降低了一些。最近做了几次优化,性能提升比较明显。

 

1、去掉冗余空格

用户对自己的页面是可以自主装修的,所以系统的页面都是动态地基于功能模板渲染出来的,这种动态渲染,有别于传统的MVC框架简单地将页面分割成不同的片段,这种动态是依据页面的结构化描述来组装页面。一个页面的渲染过程中进过了很多复杂的字符操作。功能模块渲染后HTML的缓存。进行的第一个优化便是,去掉模板中不必要的空格字符。这样做有几个好处,降低了众多模板在内存中缓存所占用的空间;减少字符处理时间;另外,多次读取不同的功能模块渲染后放在远程缓存中的html的网络开销也小了。去掉空格还是有讲究,如果直接在编写时候去掉,会造成代码的很难维护,不易阅读,系统的模板是放在数据库中的,使用插件同步,所以在插件进行同步的时候便可以进行去空格操作。

平均去掉40%左右的字符,QPS上升约30%。

 

2、精简URL地址

一个庞大的页面,可能页面中URL的长度也会造成巨大的性能影响,一个冗长的URL经过几次,十几次的For循环之后,也会吃掉很大的空间。所以说,优化的第二步,去掉页面中由于历史原因而存在但是不必要的html,精简URL,本次优化之后,降低了压缩后5%的页面输出,对于一个超大流量的网站,节约的流量也是非常可观。

 

3、页面整体缓存

由于清理缓存的缘故,页面中的功能模块渲染出来的HTML缓存在远程Cache中,一个页面有近10来次从缓存中获取HTML。网络开销也不容忽视,对页面进行整体缓存,针对模块不同的缓存策略,把不需要单独进行模块缓存清理的模块通页面html组合在一起进行缓存,这样就能够减少很多次网络开销,提高QPS

原创粉丝点击