Nginx实现简单动静分离

笔者最近在开始学提高web性能方面的知识。本文将介绍使用Nginx做分布式部署,实现静动分离,并且分析性能。

静动分离,就是将css、js、jpg等静态资源和jsp等动态资源分开处理,以此提高服务器响应速度,提高性能。

下面给出的例子实现了静动分离,其中静态资源,如css、js、jpg等由Nginx服务器处理,直接获取磁盘资源,动态资源,如jsp等由tomcat服务器处理。

首先配置Nginx。

nginx.conf的具体配置如下:

Nginx实现简单动静分离_第1张图片


Nginx服务器作为代理服务器,监听80端口,判断如果的访问动态资源,则由监听8080端口的tomcat服务器处理,否则访问本地磁盘html文件夹里的静态资源。

启动nginx服务器和tomcat服务器,在浏览器访问80端口,查看firefox浏览器的开发者工具,如下:

Nginx实现简单动静分离_第2张图片


Nginx实现简单动静分离_第3张图片


可以发现,静态资源都是直接从磁盘获取,响应头都有Cache-Control字段,静态资源的请求时间均为0ms。

而直接使用8080端口访问页面,得到如下:

Nginx实现简单动静分离_第4张图片


每个资源都需要花1-3ms来获取,而且响应头没有Cache-Control字段。由此可见,动静分离已经实现。

同样使用ab指令进行压力测试,得到结果如下:

静动分离:

Nginx实现简单动静分离_第5张图片


无静动分离:

Nginx实现简单动静分离_第6张图片


同样可以看到实现静动分离的版本的性能比较好,将完成所有请求的总时间*1000(因为数值太小)、吞吐率、传输率制作成条形图对比如下:

Nginx实现简单动静分离_第7张图片

性能高低显而易见的。

上述内容只是nginx最简单的使用而已,nginx提高性能的内容还有很多,包括缓存等等。笔者会持续学习,更新博客。



你可能感兴趣的:(JavaWeb,高性能)