网站的设计包括几个方面:
1. 前台逻辑和数据展示
2. 后台逻辑和数据库设计
一般来说,我们采用mvc设计结构。但是对于逻辑复杂的页面来说,前后台的逻辑并不能完全分割开来,后台往往需要通过使用某种方式控制前台的js,就这个时候来说,js跨越了前台和后台,造成了设计上的混乱。如果想避免这样一种情况,那么得加大力气设计js,使得js能够应付各种情况。不过这样做也是不划算的,人工和时间的开销就压得人喘不过气了,哪里管的了这么许多。
在说说优化,性能和体验是最重要的,只要性能上去了,体验也就好说了。对于网站一般走这么两步:
1.前台调优,减少http请求,数据压缩。
2.后台调优,优化架构,数据库调优。
前台调优的几个方法就我现在所知,有js压缩,延迟js加载,图片压缩,使用ajax异步调用。
后台调优的几个方法我知道的有,简化数据结构,将递归变为迭代,使用内联函数,将常用数据提前计算好,使用多级缓存,使用多线程。
关于数据库调优我准备详细说一说。
1. 程序级的优化:
1)减少访问数据库。
2)不直接使用sql语句操作数据库,而是同过使用存储过程,这样可以增加一些速度。
3)建立连接池,尽量不要重复新建连接,这样开销会比较大。
2. 表方面的优化:
1) 如果某个表的记录超过一百万,那么应该考虑将这个表分割成几个表,分表放到不同的数据库中,这几个数据库最好不在一个硬盘,如果条件允许,那么可以另外设计一个服务器,同时提供数据库操作服务。
2.)字段的名称不要太长,因为一个数据库的最小单位是页,每个页的大小是8k,如果字段名称太长,那么造成分页查询,那么会降低工作的效率。
3)如果存在大量的重复计算的过程,我们存储这些衍生数据,可以通过触发器或者存储过程保证数据的完整性。
4)对常用的数据进行索引化,不过要确定这些索引是出现在where子句中,否则索引就失去作用了。对于经常进行插入删除操作的表不要建立过多索引,因为索引的存在使这些操作开销比较大。
5)不要使用文本作为id,要使用数字,因为字符串匹配的速度应该比数字匹配的慢。
3. sql语句的优化
1)减少使用子查询,使用内联查询替代。
2)查询字段按照“用多少,查多少”的规则。