怎样做网站性能优化?
前言
对于一个网站来说,优化是我们持续关注的话题,今天浅谈一下网站的性能优化。
一、WEB前端性能优化
1.1、浏览器访问优化
1、减少HTTP访问请求
HTTP协议是无状态的应用层协议,也就是每次请求都需要建立通信链路,进行数据传输,在服务器端,每个HTTP都需要启动独立的线程去处理,这样会严重影响服务器性能,也降低了响应速度,所以我们需要减少HTTP请求的数目可提高访问性能。
减少HTTP的主要方式就是合并CSS、JavaScript、图片,将游览器一次访问需要的JavaScript、CSS合并成一个文件,多张图片合并成一张图片,这样就减少了HTTP的访问请求,达到了访问优化的效果。
2、使用游览器缓存
对于一个网站来说,Logo、CSS、JavaScript、图标这些静态资源更新的频率都很低,这些请求又是每次HTTP请求不可缺少的元素,所以可以根据HTTP头中Cache-Control和Expires的属性,设置游览器的缓存天数。
在某些时候,网站的静态资源文件需要做修改,此时对于没有做个优化的人来说肯定是修改完静态资源以后,然后缓存清掉(我之前在的公司就是这样做的,那时候技术真的很烂),对于一个并发大些的网站显然不能这样做,这会严重影响性能。合理的做法就是改变文件名实现。
3、启用压缩
在服务器端对文件进行压缩,减少传输的数据量,但是压缩会对服务器的性能带来一定的影响,如果带宽足够大,服务器资源不足的情况下要权衡考虑。
4、减少Cookie的传输
太多的Cookie会严重影响数据传输,所以哪些数据需要写入Cookie要慎重考虑,如CSS、Script等发送Cookie没有意义,可以考虑静态资源使用独立的域名访问。
1.2、使用CDN加速
CDN(内容分发网络)的本质也就是一个缓存,他能够将数据缓存到离用户最近的位置,使用户可以最快的获取数据,同时减少了数据中心的压力,所以使用CDN可以极大的提高用户访问速度。
1.3、使用代理服务器
来自互联网的访问都必须经过代理服务器,所以我们可以将一些热点信息缓存到代理服务器上,这样其他用户访问的时候,可以直接从代理服务器上获取数据,加速了WEB访问请求速度,减轻了WEB服务器的负载压力。此外使用反向代理可以实现负载均衡的功能,而通过负载均衡构建的应用集群,可以提高系统的总体处理能力,进而改善网站高并发下的性能。
二、应用服务器性能优化
应用服务器就是网站业务服务器,代码都部署在此,优化手段主要是缓存、集群、异步
2.1、使用缓存技术
现在用的最多的应该是Memcache,他使用libevent事件处理,所以性能较好,但是他不支持持久化,数据都保存在内存中,但是现在我们可以使用Couchbase集群,来保证数据的持久化。
2.2、异步操作
由上图看出来,在不使用消息队列的情况下,数据直接写入数据库中,在这高并发的情况下,会对数据库造成巨大压力,同时也导致响应延迟加剧。在使用消息队列情况下用户请求的数据发送给消息队列之后,立即返回,再有消息队列异步的写入数据库,因为消息队列的处理速度要远远大于数据库,因此用户的响应延迟可以得到有效改善。
2.3、使用集群
网站在高并发的情况下,使用负载均衡技术为一个应用构建一个由多台服务器组成的集群,将并发请求分发到多台服务器上处理,可以有效的避免单节点压力过大的情况。
2.4、代码优化
劣质代码对服务器性能的影响也是蛮大的,曾经遇到过代码里面出现了死循环,导致系统负载过高,严重降低的服务器性能所以代码的优化很重要,可以从以下几个方面考虑
- 多线程
- 资源复用
- 垃圾回收
三、数据层
我们拿Mysql举例来说,无非就是读写,下面我们详细分析一下这两中情况
3.1、数据库读请求多(大多数网站遇到的情况)
- 增加服务器的内存,给数据库分配更多的内存
- 使用主从架构做读写分离降低单台数据库的压力,从库可以使用lvs做负载均衡
- 使用缓存系统来缓存数据库的热点信息,减少访问数据库的次数降低数据库压力
3.2、数据库写入较多
- 合理的使用Raid级别不过多数都是Raid10既保证了性能也保证了冗余
- 使用缓存较大的Raid卡
- 使用固态硬盘
- 将主库拆分,可以根据业务的耦合度做拆分
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
网站的动静分离实践(动静分离)
网站的动静分离实践(动静分离) 1. 动静分离的实现思路 动静分离是将网站静态资源(HTML,JavaScript,CSS,img等文件)与后台应用分开部署,提高用户访问静态代码的速度,降低对后台应用访问。 动静分离的一种做法是将静态资源部署在nginx上,后台项目部署到应用服务器上,根据一定规则静态资源的请求全部请求nginx服务器,达到动静分离的目标。 1.1 静态资源部署至CDN上 我们的方案是直接将静态资源全部存放在CDN服务器上。因为之前项目中的JavaScript,CSS以及img文件都是存放在CDN服务器上,将HTML文件一起存放到CDN上之后,可以将静态资源统一放置在一种服务器上,便于前端进行维护;而且用户在访问静态资源时,可以很好利用CDN的优点——CDN系统能够实时地根据网络流量和各节点的连接、负载状况以及到用户的距离和响应时间等综合信息将用户的请求重新导向离用户最近的服务节点上。 1.2 后端API提供数据 后端应用提供API,根据前端的请求进行处理,并将处理结果通过JSON格式返回至前端。目前应用主要采用Java平台开发,因此应用服务器主要是Tomcat服务器,...
- 下一篇
Java设计模式应用_责任链模式
生产一个产品,需要依次执行多个步骤,才能完成,那么是使用责任链模式则是极好的。 在性能告警模块开发过程中,创建一条告警规则需要执行阈值解析,中间表生成,流任务生成,规则入库,告警事件入库等诸多操作。如果把这些步骤糅合在一个类中,代码可读性及复杂度往往是灾难的,特别对于这么多步骤的事务性操作,更是力不从心。使用责任链模式,上述问题迎刃而解。 以告警规则创建为例子,简化流程如下 阈值解析 ---> 流任务生成 ---> 规则入库 回滚流程如下 1、 阈值解析失败:回滚阈值解析。 2、 流任务生产失败:回滚流任务生成,阈值解析。 3、 规则入库失败:回滚规则入库,流任务生成,阈值解析。 采用责任链模式编码,思路如下: 1、 编写阈值解析处理器,流任务生成处理器,规则入库处理器,每个处理器包含业务处理方法和回滚方法; 2、 一个处理器业务代码执行完成后主动调用下一个处理器业务方法; 3、 一个处理器业务代码执行失败主动调用本处理器回滚方法,本处理器回滚完成后主动调用上一个处理器回滚方法。 代码如下 1、 抽象处理器 package com.coshaho.learn.handler...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Linux系统CentOS6、CentOS7手动修改IP地址
- CentOS8安装Docker,最新的服务器搭配容器使用
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- Docker安装Oracle12C,快速搭建Oracle学习环境
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- CentOS6,CentOS7官方镜像安装Oracle11G
- CentOS关闭SELinux安全模块
- CentOS7设置SWAP分区,小内存服务器的救世主
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装