大型商城网站性能提高策略
大型商城网站,比如在面对大量用户的访问、高并发请求方面,一般的商城解决方案主要在这样几个方面:使用高性能的服务器、高性能的数据库、高效率的编程语言、还有高性能的Web容器。但是这几个解决思路意味着更大的投入。
那还有什么办法去更小投入的优化这方面的性能吗?在开发DSmall商城系统的时候,我们利用了一下几点:
1、HTML静态化
大家都知道,执行效率最高、消耗最小的其实就是纯静态化的html页面,所以尽可能使网站上的页面采用静态页面去实现。
2、图片服务器分离
图片是最消耗资源的,于是我们有必要将图片与应用去进行分离,这是基本上也是大型网站都会采用的策略,它们都是有独立的、甚至是很多台的图片服务器。这样的网站架构可以降低提供访问请求的服务器压力,德尚网络DSMall多店铺系统就使用阿里云OSS支持图片应用分离。
3、数据库集群
那么在面对大量访问的时候,以及大数据量的时候,一台数据库将无法满足应用,于是我们需要使用数据库集群。
4、缓存
缓存一词搞技术的都接触过,很多地方用到缓存。网站架构和网站开发中的缓存也是非常重要。
5、负载均衡
负载均衡将是大型网站解决高负荷访问和大量并发请求采用的高端解决办法。
6、数据库优化
6.1、选择正确的存储引擎
以 MySQL为例,包括有两个存储引擎 MyISAM 和 InnoDB,每个引擎都特点。
MyISAM 适合于需要大量查询的应用。InnoDB 的趋势会是一个非常复杂的存储引擎,对于一些小的应用,它会比 MyISAM 还慢。但是它支持“行锁” ,支持事务。
2、优化字段的数据类型
数据类型的一个原则,越小的列效率越。对于大部分的数据库引擎来说,硬盘是最重大的瓶颈。因此把数据变得紧凑会对这种情况非常有帮助,因为这减少了对硬盘的访问。
如果一个表只会只有几列(比如说DSMall数据库中的配置表),我们就没有理由使用 INT 来做主键,可以使用 MEDIUMINT, SMALLINT 或是更小的 TINYINT 会更经济一些。如果你不需要记录时间,使用 DATE 要比 DATETIME 好。当然,你也需要留够足够的扩展空间。
3、字段添加索引
索引不一定就是给主键或者是唯一的字段使用的。如果在你的表中,如果有某个字段你需要经常做搜索,那么最好是为其建立索引。
4、尽量避免使用Select 从数据库里读出大量的数据,那么查询就会变慢。而且你的数据库服务器和WEB应用服务器是独立的服务器,还会增加网络数据传输的负载。即使你要查询数据表中有很多字段,也尽量不要用。
5、使用 ENUM 而不是 VARCHAR
ENUM 类型是非常快和紧凑的。在实际上,其保存的是 TINYINT,但其外表上显示为字符串。例如,性别和状态之类的字段取值是固定的,你应该使用 ENUM 而不是 VARCHAR。
6、尽可能的使用 NOT NULL
除非你有一个很特别的原因去使用 NULL 值,你应该让你的字段保持 NOT NULL。其实 NULL也是需要额外的空间,而且在进行比较的时候,程序会更复杂。 这里并不是就不能使用NULL了,依然会有些情况下,你需要使用NULL值。
五、前端优化
优化完后端服务器和数据库之后,我们还需要优化前端的界面和一些资源文件,其中主要包括图片、JS和CSS的优化。
我们建议使用网页性能测试工具进行检测和分析,软件具体会给出相关的优化建议。比如JS合并,CSS合并,图片合并等等之类。
来源:51CTO
作者:德尚网络
链接:https://blog.51cto.com/13938514/2415329?source=dra