首页 >> 科派观点 >> 技术交流
高性能网站设计要点
  • 作者:管理员  时间: 2009-4-5  来自:科派网络

1.静态、动态内容分离

jpg gif css js 这些文件单独用一个新的域名与系统程序所在的域名进行分离,以便做CDN加速,另一

方面也可以使得浏览器开单独线程下载,加快页面显示速度

2.动态页面静态化

对于内容很少改变的动态页面进行静态化以便减少系统开销,方便进行CDN加速

3.页面采用层设计

便于页面结构和内容调整,通过程序动态调用css可以做到页面风格的动态变化

4.采用ajax技术

对于页面局部内容动态变化的情况,尽量采用ajax技术,以便减少服务器流量,增加页面体验

5.采用验证码

对于需要用户输入的地方,尽可能可以采用验证码进行验证,防止恶意提交数据,验证码可以采用先点

击input文本后显示的方式,减少服务器负载

6.采用cookie和javascript相结合的技术

对于通过判断会员是否登录而显示不同登录提示的网站,可以将这种信息存入cookie,然后通过

javascript提取cookie来判断,然后document.write()不同内容。对于标准头和标准尾也可采用js加载

不同iframe的方式来加载不同头尾。

7.合理采用iframe

有助于减慢显示第三方标记和广告内容,能并发下载脚本。同时采用iframe也有弊端,即使iframe 内的

HTML 文档内容为空,消耗也比较高,会阻止页面的onload事件。

8.对所有页面提交内容进行审核

所有页面用户的输入都要认为是不可靠、不安全的,采用javascript和后端程序相结合的原则,过滤sql

inject和跨站脚本的攻击

9.合理采用重定向

对于不允许重复提交的表单和页面,在程序处理完之后给浏览器输出一个重定向页面进行结果提示,避

免用户对页面刷新造成表单的重复提交。在不需要重订向的地方尽量避免重定向,减少系统开销。

10.SEO优化

页面title、meta标签、页面内容中的关键字互相吻合,增加页面被搜索引擎收录的概率,meta标签中的

关键字不是越多越好,过犹不及,页面中的文字尽量不采用javascrip打印。对于不希望搜索引擎采集的

目录,放置robots.txt文件,避免网站被爬虫采集造成过高负载。

11.favicon.ico

大多数浏览器在访问网站的时候都会默认访问网站的头像favicon.ico,加上这个文件能够减少404错误

,提高网站性能。

12.采用模板技术

页面程序尽量采用模板技术,方便进行内容的维护

13.规划好任务和日志系统

很多网站都会涉及到定时执行的一些任务,如何执行需要事先规划好,如java采用Timer或者quartz,

php采用linux的cron定时执行等。日志系统记录系统关键事件,如采用log4J之类的第三方组件包。

14.事务规划

对于必需是一个统一的操作整体、可以回滚的操作,需要采用支持事务的数据库,程序在处理事务的时

候要有必要的回滚机制。

15.异常处理

网站的异常要有一个具体的规划,当程序遇到异常的时候采用合理的处理机制,避免造成系统崩溃,同

时构建必要的异常处理规则,避免产生异常数据,避免重大安全事件的发生。

16.采用缓存

对于局部数据可以利用语言本身的特性或者一些第三方软件包如OSCache进行内部缓存,对于全局的数据

可以采用单独的服务器进行全局缓存如memcache,缓存的内容可以是数据库表的每一条记录,也可以是

java的一个pojo也可以是php的数组,也可以使自定义的数据,根据条件自行设计缓存内容,需要注意的

是程序要规划好缓存与数据库操作的操作时序。

17.同步、异步处理

根据需要采用线程、队列、堆栈,根据业务,这方面有很大的灵活性,此外有一些开源的集群、消息系统可以分析采用,对于类似SNS之类的网站这方面的合理设计会对网站性能起到很好的提升。


18.数据库规划

选择一款能够满足需要的数据库,比如比较流行的mysql,根据需要选择不同的存储引擎,可以采用一个

master多个slave形式,程序的update insert delete针对master操作,select针对slave操作,对于读

操作多的宜采用这种形式,对于写操作比较多的可以采用分库、分表的方式。对于oracle可以采用

active standby结构,或者采用RAC。根据应用及硬件资源设置数据库参数

19.采用合适的范式

数据库设计根据需要采用不同的范式,不见得第一范式就不如第三范式,不是范式越高越好,根据应用

逻辑的不同进行选择,最大限度增加数据库的读写性能。任何跟支付和消费相关的数据都要对原始记录

进行记录。

20.建立索引

根据sql建立不同的索引,索引能够极大提高数据库的读性能。

21.数据库连接池

程序采用数据库连接池对数据库进行操作,减少每次连接数据库的性能开销。

22.采用适当的设计模式

根据业务逻辑选择不同的设计模式,如工厂模式,代理模式,单列模式等,模式只是一个思路和经验,

可以自行变通。

23.采用分层结构

将表现层,业务层,数据层进行分离,这样便于程序的开发和维护,不同层次的程序除了通过接口变量

交换数据之外还可以使用xml在不同层次进行数据传输转换。程序内部宜采用高内聚低耦合的模块划分方

式,模块之间通过接口调用。系统与系统之间可以可以采用xml进行数据交换。

24.第三方接口

方式跟第三方的接口,请求和接收的数据都需要验证,一般第三方都会提供签名和验签机制,如果是自

己为第三方提供服务,则可自行设计,验签的方法有多种,如对称密钥、非对称密钥、md5指纹等。

25.后台统计和管理
任何网站都有自己的后台,后台主要是统计、查询、内容管理,统计用的数据库尽量与线上实时数据进

行分离,它可以是一个线上的备份数据库,也可以是一个数据仓库,数据从线上不同数据库进行抽取。

26.负载均衡
对不同层次可以采用不同的负载均衡机制,web前端可以用f5、lvs等做第一层负载均衡,在应用层可以

根据应用再利用负载均衡设备或者软件做一次负载均衡,在数据层可以再做一层负载均衡,这样通过不

断在各层增加服务器进行扩容。

27.符合网监处的要求

对登陆和注册的会员数据至少要保留3个月等。