目录
1.流量优化
1.1 防盗链处理
把一些恶意的请求拒之问外。如:现在有A,B两个站,A站 想用 B站 的资源,直接在页面嵌入了一些图片,JS,CSS,本身来说,A站并不关心B站会消耗多少流量,但是对于B站来说,如果我们调用了B站的一些图片,JS或者CSS,都会对它做一个HTTP请求,就会消耗流量和带宽,所以本身对B站来说,会有不好的影响。从另一个角度来说,也侵犯了B站的版权问题,因此在这儿,要做 防盗链处理,这是流量的优化。
2.前端优化
2.1 减少HTTP请求
假设打开一个界面,可以把一些CSS,JS文件,图片进行合并,这样做虽然会使文件变大,但是减少了请求的次数。
2.2 添加异步请求
如:不是一些很重要的数据,用户首次请求界面的时候,先不进行展示,需要的时候再进行展示,我们可以在旁边放一些事件,通过一些JS、jQuery等第三方库做一些AJAX的相关的异步请求,这样对于HTTP请求在性能上回有一个大幅度的提升,不要一次性把数据都加载过来,这样会对服务器造成很大的压力。
2.3 启用浏览器缓存和文件压缩
如:启用浏览器去缓存HTML文件给其设定过期时间,设定缓存文件相关的指纹等等。还可以将静态资源文件(如:JS、image等一些前端资源)设置过期时间缓存,为其指定过期时间,把它缓存到浏览器中,这样下一次再去访问的时候,不需要去请求服务端,可以直接通过浏览器把缓存读取出来。对于 文件压缩,可以通过一些压缩方式,如:把图片压缩的小一些,展示的时候图片就会下载的更快些,响应速度会加深,并且减少了流量的消耗,减少了带宽的消耗。同时也可以启用 Nginx 的 GCPR服务,将文件整体来说压的小一些。
2.4 CDN 加速
可以把一些前端的文件,前端的资源全部都放到CDN当中,用户过来访问的时候,可以就近来进行访问,从而提高访问速度,并且从一定意义上来说,也解决了带宽不够用的问题,可以把数据缓存到CDN的节点中,在用户去访问的时候,都会就近的选择CDN的节点进行访问,从一定意义上来说,就不会访问我们真实的服务器。
2.5 建立独立图片服务器
因为本身来说,图片服务器是比较吃I/O的,为了解决对 I/O的损耗,可以把它与我们的 Web 服务器完全分离开,这样 Web 服务器本身的I/O 不会被我们的图片损耗,然后还可以针对性的对我们的图片服务器做一些优化,如:提高硬盘的转速;把CPU的计算能力降低下来;把图片服务器做一个集群。
3.服务端优化
3.1 页面静态化
把现有的服务端的逻辑(如:PHP),把PHP的一些逻辑,PHP的一些数据,PHP最终生成的要显示给用户的一些HTML内容缓存起来,直接缓存成HTML代码速度会更快,并且对我们的CPU负载,对我们的服务器的压力都会减小很多。
3.2 并发处理
如:页面做了一些静态化,但是静态化会有一个过期时间,不可能永远显示页面,如果是这样创建一些动态的内容就没有意义了,但是对于实质性要求比较高的来说,我们可能在做一些静态化的时候,不是特别的合理。这时需要穿透静态化,即绕过静态化,来直接访问真实的数据。访问真实数据的时候,可能就需要做一些程序上的并发处理,如 多线程多进程的异步处理、队列处理 等等,都可以异步完成数据的处理,从而提升请求的响应的速度,同时也提升了并发数。
3.3队列处理
4.数据库优化
4.1 数据库缓存
memcache 缓存
redis 缓存等
4.2 读写分离
把一些服务器,一些数据完全分开;
一些服务器做数据库的读操作(查询),一些服务器做写操作(增、删、改)
4.3分库分表、分区操作
垂直拆分、水平拆分;
分区
4.4 负载均衡
5.Web 服务器优化
5.1负载均衡
可以使用 Nginx 的反向代理来实现负载均衡;
使用七层,使用四层(LVS)软件来实现负载均衡。